Internet Windows Android
Kengaytirish

preg php misollarini almashtiring. Misollar bilan PHPda oddiy ifodalar

PHP, zamonaviy dasturlash tiliga mos bo'lganligi sababli, ishlab chiquvchiga oddiy iboralardan foydalanish uchun bir qator funktsiyalarni taklif qiladi. Murakkab mezonlar yordamida boshqa satrlar ichida satrlarning paydo bo'lishini qidirishingiz mumkin.

  • PREG_PATTERN_ORDER;
  • PREG_SET_ORDER.

Birinchi variant bo'yicha saralash qidiruv natijalarini oddiy ifoda raqami (standart qiymat) bo'yicha guruhlaydi. Ikkinchi holda, natijalar qatordagi joylashuvi bo'yicha guruhlanadi.

Belgi - shablon elementi

Shablon belgilar ustida ishlashini yodda tutish kerak. Dasturlash uzoq vaqtdan beri "belgi" ma'lumotlar turi nima ekanligini unutgan. Zamonaviy tillar "string" tushunchasidan pastga tushmaydi, ammo shablonga kelsak, tushunishingiz kerak: bu erda belgilar manipulyatsiya qilinadi.

Shablonni qurish, birinchi navbatda, kerakli belgilar ketma-ketligini ko'rsatishdir. Agar bu aniq tushunilsa, shablonda hech qanday xato bo'lmaydi. Har holda, u ancha kamroq bo'ladi.

  • a - ma'lum bir shablon elementi - belgi.
  • a-z shablon elementi, shuningdek, bitta belgi, lekin faqat a dan z gacha bo'lgan qiymatga ega - barcha kichik lotin harflari.
  • 0-9 - bitta raqam va har qanday, lekin 1-3 - faqat 1, 2 yoki 3.

Shablondagi holat muhim ahamiyatga ega. Naqshning birinchi va oxirgi belgilari mavjud katta ahamiyatga ega. Shablon qayerda boshlanishi va tugashini belgilashingiz mumkin.

Funktsiya shabloni

PHP preg match all standart muntazam ifoda sintaksisidan foydalanadi. ular ko'rsatadigan belgilardan birini belgilang:

  • faqat a, b, c belgilar.
  • [^ABC] A, B, C belgilaridan tashqari hamma narsa.
  • \w va \W - matn yoki matn bo'lmagan belgilar.
  • \s va \S - bo'shliq yoki bo'sh joy bo'lmagan belgilar.
  • \d va \D - raqam yoki raqam emas.

Takroriy belgilar jingalak qavslar bilan belgilanadi - (n, m) va oldingi belgiga murojaat qiling.

  • n "hech bo'lmaganda" takrorini bildiradi;
  • m - "endi yo'q" ning takrorlanishi.

Sintaksis shablonlarni yaratishning ko'plab variantlarini taqdim etadi, ammo asosiylardan, ya'ni murakkab elementlar va kombinatsiyalar mavjud bo'lmagan o'zi tomonidan yozilgan oddiylaridan boshlash yaxshidir.

Sodda qilib aytganda, zarur bo'lgan haqiqiy belgilarni sanab, ularning kerakli miqdorlarini ko'rsatib, "^" belgisi qatorning boshiga, "$" belgisi esa satr oxiriga to'g'ri kelishini hisobga olib, oddiy naqshlar yaratishingiz mumkin. Malakali odamlarning haqiqiy, yaxshi yog'langan muntazam iboralarni tahlil qilish orqali siz preg match allning murakkab ilovalarini yaratish uchun mustahkam poydevorga ega bo'lishingiz mumkin. PHP arsenali bu ikki funksiya bilan chegaralanib qolmaydi, lekin ular eng ko'p qo'llaniladi.

Oddiy amaliyot

Butun son uchun shablon:

  • "/*/"

Bundan tashqari, butun son naqsh, lekin oldida ("+", "-") belgisi bo'lishi mumkin va old / orqada qo'shimcha bo'shliqlar bo'lishi mumkin:

  • /^[\s|\+|\-](0,1)*/

Xuddi shunday:

  • /^[\s|\+|\-](0,1)*(\.)*/ - nuqtali raqam.
  • /+@+\.(2,3)/ - elektron pochtani tanib olish varianti.

O'zingizning shablonlaringizdan foydalanish barchaga mos keladi, ularning Internetdagi misollari, veb-sayt sahifalarining kod tahlili va boshqa manbalar shablonlar kutubxonangizni yaratishga imkon beradi.

Ma'lumotni topishning ko'plab variantlari mavjud. Xususan, berilgan oxirgi ikkita konstruktsiyani boshqacha modellashtirish mumkin. Ko'pgina hollarda, kerakli moslikni tezroq va aniqroq ta'minlaydigan shablonga ustunlik beriladi. PHP da preg match all dan foydalanish, shuningdek, boshqa tillardagi shunga o'xshash funksiyalar amaliyot, e'tibor va shablonlarning to'g'riligini oldindan tekshirishni talab qiladi.

Ushbu maqola PHP regexp misollari tanlovini taqdim etadi. Juda yaxshi va foydali to'plam muntazam iboralarga misollar. Barcha muntazam ifoda misollari PHP uchun qabul qilinadi. Sog'lik uchun foydalaning!

Domen nomini tekshirish misoli

Shuni hisobga olgan holda, PHP parchasi satrning to'g'ri domen nomi yoki yo'qligini tekshiradi.

?:.*)+):?(d+)?/?/i, $url)) ( echo "Sizning urlingiz yaxshi."; ) else ( "Noto'g'ri url."; ) echo

Matnda so'zlarni ajratib ko'rsatishga misol

Matndagi kerakli so'zni topish va ta'kidlash uchun juda foydali muntazam ibora. Kod ayniqsa qidiruv natijalarini yaratishda foydalidir.

$text = "KomunitasWeb dan namunaviy jumla, regex veb-dasturlashda mashhur bo'ldi. Endi biz regexni o'rganamiz. Vikipediyaga ko'ra, Regular iboralar (regex yoki regexp sifatida qisqartirilgan, ko'plik shakllari regexs, regexps yoki regexen) rasmiy shaklda yoziladi. muntazam ifoda protsessori tomonidan talqin qilinadigan til”; $matn = preg_replace("/b(regex)b/i", " 1", $matn); echo $matn;

Qidiruv natijalarini ta'kidlashni amalga oshirishga misolWordPress

Search.php faylini oching va the_title() funksiyasini toping. Uni quyidagi qator bilan almashtiring:

echo $title;

Endi, almashtirilgan qatordan oldin, ushbu kodni joylashtiring:

\0", $title); ?>

Search.php faylingizni saqlang va style.css faylini oching. Unga quyidagi qatorni qo'shing:

Strong.search-parcha (fon: sariq; )

Rasmlarni olish misoliHTML regexp usuli

Bu parcha php kodi va oddiy iboralar yordamida u barcha tasvirlarni va ularning URL manzilini qidiradi.

$tasvir = massiv(); preg_match_all("/(img|src)=("|")[^"">]+/i", $ma'lumotlar, $media); sozlanmagan ($ma'lumotlar); $data=preg_replace("/(img|src)("|"|="|=")(.*)/i","$3",$media); foreach($ma'lumotlar $url sifatida) ( $info = pathinfo($url); if (isset($info["kengaytma"])) ( if (($info["kengaytma"] == "jpg") || ($info["kengaytma"] == "jpeg") || ($info["kengaytma"] == "gif") || ($info["kengaytma"] == "png")) array_push($ rasmlar, $url); ) )

Takroriy so'zlarni olib tashlang (katta harflar hisobga olinmaydi)

Siz tez-tez takrorlanadigan so'zlarni topasizmi? Keyin ushbu oddiy ifoda misoli siz uchun foydali bo'ladi.

$matn = preg_replace("/s(w+s)1/i", "$1", $matn);

Ikki nusxadagi nuqtalarni olib tashlash

Xuddi shunday, faqat takrorlanadigan nuqtalar bilan.

$matn = preg_replace("/.+/i", ".", $matn);

XML/HTML teglarining mos kelishi

Ushbu oddiy funktsiya ikkita argumentni oladi: teg (siz mos kelmoqchi bo'lgan), xml yoki html kodi.

funksiya get_tag($tag, $xml) ( $tag = preg_quote($tag); preg_match_all("(<".$tag."[^>]*>(.*?).")", $xml, $mos, PREG_PATTERN_ORDER); $ mosligini qaytarish; )

Muayyan atribut qiymatlari bilan XHTML/XML teglarini qidiring

Ushbu misol oldingi funksiyaga o'xshaydi, faqat siz qidiruvni sezilarli darajada kengaytirishingiz mumkin, masalan, topish

.

Funktsiya get_tag($attr, $value, $xml, $tag=null) ( if(is_null($tag)) $tag = "\w+"; else $tag = preg_quote($tag); $attr = preg_quote($) attr); $value = preg_quote($value); $tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*". "(["\"])$qiymat\\2[^>]*>(.*?)<\/\\1>/" preg_match_all($tag_regex, $xml, $matches, PREG_PATTERN_ORDER); return $match; )

O'n oltilik rang qiymatlarini toping

Moslikni qidiradigan muntazam iboraning ajoyib namunasi o'n oltilik qiymatlar ichida ranglar berilgan chiziqlar. Bu nima uchun? Ehtimol, siz xizmat yozmoqchisiz CSS siqish kod yoki shunga o'xshash narsa.

$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "misol 6 muvaffaqiyatli."; )

Qidiruv misoliberilgan sahifadagi sarlavha

Bu qiziqarli misol Regexpli PHP kodi teglar orasidagi matnni qidiradi va qaytaradi Va.

Feof($fp))( $page .= fgets($fp, 4096); ) $titre = eregi(" (.*)",$page,$regs); echo $regs; fclose($fp);

Apache jurnalini tahlil qilish

Aksariyat saytlar taniqli saytlar tomonidan ishlab chiqilgan Apache serverlari. Agar sizning saytingiz ham unda ishlayotgan bo'lsa, u holda siz server jurnalini tahlil qilishingiz mumkin php yordamida regexp.

//Jurnallar: Apache veb-serveri //Faqat HTML-fayllarga muvaffaqiyatli xitlar. Sahifani ko'rishlar sonini hisoblash uchun foydalidir. "^((?#mijoz IP yoki domen nomi)S+)s+((?#asosiy autentifikatsiya)S+s+S+)s+[((?#sana va vaqt)[^]]+)]s+"(?: GET|POST|HEAD) ((?#fayl)/[^ ?"]+?.html?)??((?#parameters)[^ ?"]+)? HTTP/+"s+(?#status kodi)200s+((?#bayt uzatildi)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agenti) )[^"]*)"$" //Jurnallar: Apache veb-server //Faqat 404 xatolik "^((?#mijoz IP yoki domen nomi)S+)s+((?#basic autentifikatsiya)S+s+S+) s+[((?#sana va vaqt)[^]]+)]s+"(?:GET|POST|HEAD) ((?#fayl)[^ ?"]+)??((?#parameters)[ ^?"]+)? HTTP/+"s+(?#status kodi)404s+((?#bayt o'tkazildi)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agenti) )[^"]*)"$"

Parolning murakkabligini tekshirish misoli

Parolning murakkablik darajasini tekshiradigan muntazam ifodaning ajoyib namunasi. Parol 6 ta belgidan iborat bo'lishi kerak, kamida bitta katta harf, kichik harf, raqam bo'lishi kerak.

"A(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?) [-_a-zA-Z0-9](6,)z"

Matn kulgichlarini grafik kulgichlar bilan almashtirish

Ushbu kod misoli matn emotsiyasini sizning grafikingizga o'zgartiradi. Qiziqarli va foydali PHP parchasi.

$texte="Smaylili matn:-)"; echo str_replace(":-)"," ",$matn);

Rasmlarni olish uchun oddiy ifoda misolihtml kodi

Buni aytishga arziydi php berilgan kod wordpressda tasvirlarni qidirish va qayta ishlash uchun ishlatiladi.

post_content; $szSearchPattern = "~ ]* />~"; // Barcha rasmlarni olish va natijalarni $aPics preg_match_all($szSearchPattern, $szPostContent, $aPics) da saqlash uchun preg_match_all-ni ishga tushiring; // Bizda kamida 1 ta rasm borligini tekshiring $iNumberOfPics = count($aPics); if ($iNumberOfPics > 0) ( // Bu yerda siz rasmlaringizni qayta ishlashingiz mumkin // Ushbu misolda ular monitorda ($i=0; $i) ko‘rsatiladi.< $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>

Umid qilamanki, siz ushbu kompilyatsiyani foydali deb topdingiz. php misollar regexp. Agar qiziqarli qo'shimchalar yoki oddiy iboralar (php) misollari bo'lsa, izohlarda yozing.

(PHP 4, PHP 5, PHP 7)

preg_replace- Qidiruv va almashtirishni amalga oshiradi muntazam ifoda

Parametrlar ro'yxati

Istalgan shablon. Satr yoki qatorlar massivi bo'lishi mumkin.

Ba'zi PCRE modifikatorlari ham mavjud, jumladan eskirgan " e" (PREG_REPLACE_EVAL) faqat ushbu funktsiyaga xosdir.

O'zgartirish

O'zgartirish uchun satrlar yoki qatorlar. Agar bu parametr satr va naqsh massiv bo'lsa, barcha naqshlar ushbu satr bilan almashtiriladi. Agar naqsh ham, almashtirish ham massiv bo'lsa, naqshning har bir elementi almashtirish dan mos keladigan element bilan almashtiriladi. Agar almashtirish massivida naqsh massividan kamroq elementlar bo'lsa, naqshdagi qo'shimcha naqshlar bo'sh satrlar bilan almashtiriladi.

almashtirish kabi havolalarni o'z ichiga olishi mumkin \\n, yoki (PHP 4.0.4 dan beri) $n, oxirgi variant afzalroq. Har bir bunday havola n-chi kichik naqshga mos keladigan pastki qator bilan almashtiriladi. n 0 dan 99 gacha qiymatlarni va havolani qabul qilishi mumkin \\0 (yoki $0 ) butun naqshning paydo bo'lishiga mos keladi. Pastki naqshlar bittadan boshlab chapdan o'ngga raqamlangan. Teskari chiziqdan foydalanish uchun uni takrorlash kerak (PHP liniyasi "\\\\" ).

Pastki naqsh havolalaridan foydalangan holda naqsh bilan almashtirilganda, raqam darhol niqobdan keyin kelganda vaziyat yuzaga kelishi mumkin (masalan, mos keladigan niqobdan keyin raqamni o'rnatish). Bunday holda, siz shaklning tanish yozuvidan foydalana olmaysiz \\1 pastki naqshlarga murojaat qilish. Kirish, masalan, \\11 , chalkashtirmoq preg_replace(), chunki u siz havoladan foydalanmoqchimisiz, buni aniqlay olmaydi \\1 keyin raqam 1 yoki shunchaki havoladan foydalanmoqchimisiz \\11 keyin hech narsa. Ushbu noto'g'ri tushunish qurilish yordamida bartaraf etilishi mumkin \${1}1 izolyatsiya qilingan havoladan foydalanish $1 , va keyingi raqam 1 .

Eskirgan modifikatordan foydalanganda e bu funksiya ba'zi belgilardan qochadi (ya'ni " , " , \ va NULL) orqaga havolalar o'rnini bosuvchi satrlarda. Bu foydalanishda sintaksis to'g'ri bo'lishini ta'minlash uchun qayta havolalar bitta yoki ikkita tirnoq ichida (masalan, "strlen(\"$1\")+strlen("$2")"). PHP ning satrlarni qayta ishlash sintaksisini tushunganingizga ishonch hosil qiling, shunda talqin qilingan satr qanday ko'rinishini aniq bilasiz.

Mavzu

Izlash va almashtirish uchun satr yoki qatorlar.

Agar mavzu massiv bo'lsa, u holda qidirish va almashtirish mavzu massivining har bir elementida amalga oshiriladi va qaytariladigan qiymat ham massiv bo'ladi.

Har bir mavzu satrida naqsh uchun almashtirishlarning maksimal mumkin bo'lgan soni. Asl qiymati -1 (cheklov yo'q).

Belgilangan bo'lsa, bu o'zgaruvchi amalga oshirilgan almashtirishlar soni bilan to'ldiriladi.

Qaytish qiymatlari

preg_replace() agar mavzu massiv bo'lsa, massivni qaytaradi, aks holda satr qaytariladi.

Agar mosliklar topilsa, qaytariladi yangi versiya mavzu , aks holda mavzu tegilmagan holda qaytariladi, xato bo'lsa qaytariladi NULL.

Xatolar

Eskirgan "\e" modifikatoridan foydalanish daraja xatosini keltirib chiqaradi E_QO'SHILGAN.

O'zgarishlar ro'yxati

Misollar

Misol №1 Raqamdan keyin pastki naqshlardan foydalanish

$string = "2003 yil 15 aprel" ;
$pattern = "/(\w+) (\d+), (\d+)/i" ;
$almashtirish = "$(1)1,$3" ;
echo preg_replace ($pattern, $almashtirish, $string);
?>

Beispiel №2 Raqamli indeksli massivlarni funktsiya argumentlari sifatida ishlatish preg_replace()

$string = – Tez qo‘ng‘ir tulki dangasa itning ustidan sakrab o‘tdi.;
$naqshlar = massiv();
$patterns [ 0 ] = "/tezkor/" ;
$patterns [ 1 ] = "/jigarrang/" ;
$patterns [ 2 ] = "/fox/" ;
$almashtirishlar = massiv();
$almashtirishlar [ 2 ] = "ayiq" ;
$almashtirishlar [ 1 ] = "qora" ;
$replacements [ 0 ] = "sekin" ;

?>

Amalga oshirish natijasi bu misol:

Ayiq qora sekin dangasa itning ustidan sakrab tushdi.

Shablonlar va almashtirishlarni kalit bo'yicha saralab, biz kerakli natijaga erishamiz:

ksort($naqshlar);
ksort ($ almashtirishlar);
echo preg_replace ($patterns, $almashtirish, $string);
?>

Ushbu misolni ishga tushirish natijasi:

Sekin qora ayiq dangasa itning ustidan sakrab tushdi.

3-misol Bir nechta naqshlar bilan almashtirish

$patterns = massiv ( "/(19|20)(\d(2))-(\d(1,2))-(\d(1,2))/",
"/^\s*((\w+))\s*=/");
$almashtirish = massiv("\3/\4/\1\2" , "$\1=" );
echo preg_replace ($patterns , $almashtirish , "(startDate) = 1999-5-27" );
?>

Muntazam iboralar naqshga mos keladigan satrdagi ketma-ketliklarni topishga imkon beradi. Misol uchun, "Vasya (. *) Qovoq" shablonini Vasya va Qovoq so'zlari o'rtasida istalgan belgilar soni bo'lganda ketma-ketlikni topishga imkon beradi. Agar siz oltita raqamni topishingiz kerak bo'lsa, unda biz "(6)" yozamiz (agar, masalan, oltidan sakkiztagacha bo'lsa, "(6,8)"). Bu belgilar to'plami ko'rsatkichi va kerakli raqam ko'rsatkichi kabi narsalarni ajratadi:

<набор символов><квантификатор><жадность>

Belgilar to'plami o'rniga har qanday belgining belgisi ishlatilishi mumkin - nuqta, ma'lum belgilar to'plami ko'rsatilishi mumkin (ketliklar qo'llab-quvvatlanadi - eslatib o'tilgan "0-9"). Buni "tashqari" deb aytish mumkin bu to'plam belgilar".

Belgilar soni ko'rsatkichi rasmiy php hujjatlarida "miqdor ko'rsatkichi" deb ataladi. Bu atama qulay va yolg'on mish-mishlarga ega emas. Shunday qilib, kvant ko'rsatkichi ma'lum bir qiymatga ega bo'lishi mumkin - bitta sobit ("(6)") yoki raqamli diapazon ("(6,8)") yoki mavhum "har qanday raqam, shu jumladan 0" (" * "), "har qanday natural son" - 1 dan cheksizgacha ("+": "document+.txt"), "yoki 0 yoki 1" ("?"). Bu belgilar toʻplami uchun standart kvantifikator bitta (“document.txt”).

Kombinatsiyalarni yanada moslashuvchan qidirish uchun ushbu "belgilar to'plami - kvantifikator" to'plamlari metastrukturalarga birlashtirilishi mumkin.

Har qanday moslashuvchan vosita singari, muntazam iboralar ham moslashuvchan, ammo mutlaqo emas: ularning doirasi cheklangan. Misol uchun, agar siz matndagi bir qattiq satrni boshqasiga almashtirishingiz kerak bo'lsa, yana tuzatilgan bo'lsa, str_replace dan foydalaning. PHP ishlab chiquvchilari buning uchun ereg_replace yoki preg_replace murakkab funksiyalaridan foydalanmaslikni yig'lab so'rashadi, chunki ular chaqirilganda string izohlanadi va bu tizim resurslarini jiddiy ravishda sarflaydi. Afsuski, bu yangi PHP dasturchilarining sevimli rakesidir.

Oddiy ifoda funktsiyalaridan faqat "u erda" qaysi qator borligini aniq bilmasangizgina foydalaning. Misollardan: qidiruv satridan xizmat belgilari va qisqa so'zlar kesilgan, shuningdek, qo'shimcha bo'shliqlar kesilgan qidiruv kodi (aniqrog'i, barcha bo'shliqlar siqilgan: "+" bitta bo'sh joy bilan almashtiriladi). Ushbu funktsiyalar yordamida men sharh qoldirgan foydalanuvchining elektron pochtasini tekshiraman. Ko'p foydali ishlarni qilish mumkin, ammo shuni yodda tutish kerakki, muntazam iboralar hamma narsaga qodir emas. Misol uchun, katta matnda murakkab almashtirishni amalga oshirmaslik yaxshiroqdir. Axir, masalan, dastur rejasidagi "(. *)" kombinatsiyasi matnning barcha belgilarini sanab o'tishni anglatadi. Va agar shablon satrning boshiga yoki oxiriga bog'lanmagan bo'lsa, unda shablonning o'zi butun matn bo'ylab "harakatlanadi" va qo'shaloq sanab olinadi, aniqrog'i, ro'yxatga olish kvadrati. Boshqa "(.*)" kombinatsiyasi kubdagi iteratsiya va hokazolarni bildirishini taxmin qilish oson. Uchinchi darajaga ko'taring, masalan, 5 kilobayt matn. 125 000 000 000 (so'z bilan aytganda: bir yuz yigirma besh milliard tranzaksiya) chiqadi. Albatta, agar siz qat'iy yondashsangiz, unchalik ko'p operatsiyalar bo'lmaydi, lekin to'rt-sakkiz barobar kamroq bo'ladi, lekin raqamlarning tartibi juda muhimdir.

Belgilar to'plami

. nuqtahar qanday belgi
[<символы>] kvadrat qavslarbelgilar sinfi ("har qanday"). Masalan
[^<символы>] salbiy belgilar sinfi ("har qanday lekin")
- chiziqchabelgilar sinfidagi ketma-ketlikni belgilash ("" raqamlari)
\d Faqat raqamlar
\D[^0-9] Raqamlardan tashqari
\w Harflar va raqamlar
\V[^a-z0-9]Harflar va raqamlardan tashqari
\s Bo'shliq belgilari: bo'sh joy, tab, yangi qator
\S[^ ] Bo'shliq belgilaridan tashqari
| (bir|boshqa)Bu joy sanab o'tilgan variantlardan biri bo'lishi mumkin, masalan: (Vasya|Petya|Masha). Agar uni tanlashni xohlamasangiz (?: ...) dan foydalaning.

Bittasini ifodalash uchun belgilar sinfidan foydalanmang ("+" o'rniga "+" yaxshi bo'ladi). Belgilar sinfida nuqta yozmang, chunki bu har qanday belgi, keyin sinfdagi boshqa belgilar ortiqcha bo'ladi (va salbiy sinfda barcha belgilar bekor qilinadi).

Miqdor ko'rsatkichi

Miqdor ko'rsatkichi ma'lum bir qiymatni ham, chegaralarni ham belgilashi mumkin. Agar berilgan son kvantifikator chegarasiga to'g'ri kelsa, ifodaning fragmenti tahlil qilingan qatorga mos keladi deb hisoblanadi. Sintaksis:

{<количество> }

{<минимум> , <максимум> }

Agar siz faqat kerakli minimalni ko'rsatishingiz kerak bo'lsa, lekin maksimal bo'lmasa, vergul qo'ying va ikkinchi raqamni yozmang: "(5,)" ("minimal 5"). Eng ko'p ishlatiladigan kvantlar uchun maxsus belgilar mavjud:

Amalda, bunday belgilar jingalak qavslarga qaraganda tez-tez ishlatiladi.

Ankerlar

Ushbu belgilar mos ravishda satrning boshida va oxirida paydo bo'lishi kerak.

Ochko'zlik

Savol belgisi, shuningdek, miqdorni minimallashtiruvchi vazifasini ham bajaradi:
.*?

eskiz[b]va bu erda - yanada semizroq qaytdi"; $to = " $1"; $re1 = "|\ (.*) \|ixs"; $re2 = "|\ (.*?) \|ixs"; $natija = preg_replace($re1, $to, $str); echo " Ochko'z versiyasi: ".htmlspecialchars($result,null,"windows-1251")."
"; $result = preg_replace($re2, $to, $str); echo "Lazy versiya: ".htmlspecialchars($result,null,"windows-1251")."
"; ?> Chiqish misoli: Greedy versiyasi: qalin matn [b] va bu erda - yanada qalinroq qaytdi Yalang'och versiya: qalin matn [b] va bu erda - yanada qalinroq qaytdi

Shablon qatori, siz allaqachon sezganingizdek, slash bilan boshlanadi va tugaydi. Ikkinchisidan keyin parametrlar keladi:

ikatta-kichik harflarsiz qidiruv
m

ko'p qatorli rejim. Odatiy bo'lib, PCRE naqshga faqat bitta satr ichida mos keladi va "^" va "$" belgilari faqat butun matnning boshi va oxiriga mos keladi. Ushbu parametr o'rnatilganda, "^" va "$" alohida satrlarning boshi va oxiriga mos keladi.

sbelgisi "." (nuqta) qator uzilishiga ham mos keladi (standart hech biri)
Amatn boshiga langar
E"$" belgisini faqat matn oxiriga mos kelishiga olib keladi. Agar m oʻrnatilgan boʻlsa, eʼtiborga olinmaydi.
UHar bir miqdor ko‘rsatkichi uchun “ochko‘zlik”ni o‘zgartiradi (agar miqdor ko‘rsatkichidan keyin “?” belgisi bo‘lsa, bu miqdor ko‘rsatkichi endi “ochko‘z” emas).
eO'zgartirish qatori PHP kodi sifatida talqin qilinadi.

Muntazam iboralar bilan ishlash funksiyalari

  • preg_grep
  • preg_match - Muntazam ifoda bilan moslikni bajaradi. Bu funksiya faqat birinchi moslikni qidiradi!
  • preg_match_all
  • preg_quote - Oddiy iboralardagi qochish belgilari. Bular. barcha xizmat belgilaridan (masalan, qavslar, kvadrat qavslar va boshqalar) oldiga qirrali chiziq qo'yadi, shunda ular tom ma'noda olinadi. Agar sizda foydalanuvchi ma'lumotlari mavjud bo'lsa va uni oddiy iboralar yordamida tekshirsangiz, undan oldin kiruvchi o'zgaruvchidagi xizmat belgilaridan qochish yaxshiroqdir.
  • preg_replace
  • preg_replace_callback - Oddiy ifodalarni qidirish va almashtirishni amalga oshiradi
  • preg_split

preg_grep

Funktsiya preg_grep- Naqshga mos keladigan hodisalar qatorini qaytaradi

Sintaksis

massiv preg_grep(satr namunasi, massiv kiritish [, int bayroqlari])

preg_grep() berilgan naqshga mos keladigan kirish kiritish massivining elementlaridan iborat massivni qaytaradi.

Flags parametri quyidagi qiymatlarni qabul qilishi mumkin:

PREG_GREP_INVERT
Agar bu bayroq o'rnatilgan bo'lsa, preg_grep() funksiyasi ularni qaytaradi massiv elementlari, ular berilgan naqshga mos kelmaydi.
preg_grep() tomonidan qaytarilgan natija asl ma'lumotlar qatori bilan bir xil indekslardan foydalanadi. Agar bu xatti-harakat sizga mos kelmasa, qayta indekslash uchun preg_grep() tomonidan qaytarilgan massivga array_values() ni qo'llang.
Kod misoli:

// Barcha massiv elementlarini qaytaradi // floatlarni o'z ichiga olgan $fl_array = preg_grep("/^(\d+)?\.\d+$/", $array);

preg_match

Funktsiya preg_match- Muntazam ifodalarni moslashtirishni amalga oshiradi

Sintaksis

int preg_match(satr namunasi, satr mavzusi [, massiv mos keladi [, int bayroqlari [, int ofset]]]) Berilgan matn mavzusida naqsh bilan mos keladiganlarni qidiradi

Agar qo'shimcha parametr mosliklar aniqlansa, u qidiruv natijalari bilan to'ldiriladi. $matches elementi butun naqshning paydo bo'lishiga mos keladigan satr qismini, $ birinchi pastki naqshga mos keladigan satr qismini va hokazolarni o'z ichiga oladi.

bayroqlar quyidagi qiymatlarni qabul qilishi mumkin:

PREG_OFFSET_CAPTURE

Qidiruv chapdan o'ngga, chiziq boshidan amalga oshiriladi. Ixtiyoriy ofset parametri qidiruv uchun muqobil boshlang'ich pozitsiyasini belgilash uchun ishlatilishi mumkin. Xuddi shunday natijaga mavzuni substr()($subject, $offset) bilan almashtirish orqali erishish mumkin.

preg_match() funksiyasi topilgan moslik sonini qaytaradi. Bu 0 (hech qanday moslik topilmadi) va 1 bo'lishi mumkin, chunki preg_match() birinchi moslik topilgandan keyin to'xtaydi. Agar siz barcha mosliklarni topishingiz yoki hisoblashingiz kerak bo'lsa, preg_match_all() funktsiyasidan foydalanishingiz kerak. Preg_match() funksiyasi bajarilish vaqtida xatolik yuz bergan bo'lsa, FALSE qiymatini qaytaradi.

Tavsiya: Agar berilgan satrda pastki qator mavjudligini tekshirish kerak bo'lsa, preg_match() funksiyasidan foydalanmang. Buning uchun strpos() yoki strstr() dan foydalaning, chunki ular ishni tezroq bajaradi.

Kod misoli

Kod misoli

Kod misoli

Misol natijasi:

domen nomi: sayt

preg_match_all

Funktsiya preg_match_all- Qatorda global naqsh qidirishni amalga oshiradi

Sintaksis

int preg_match_all(satr namunasi, satr mavzusi, massiv mosligi [, int bayroqlari [, int ofset]])

Naqshning barcha mosliklari uchun mavzuni qidiradi va natijani bayroqlar kombinatsiyasi tomonidan belgilangan tartibda mos keladiganlar qatoriga joylashtiradi.

Birinchi moslikni topgandan so'ng, keyingi qidiruvlar qatorning boshidan emas, balki oxirgi topilgan hodisaning oxiridan boshlab amalga oshiriladi.

Ixtiyoriy bayroqlar parametri quyidagi qiymatlarni birlashtirishi mumkin (esda tutingki, PREG_PATTERN_ORDERni PREG_SET_ORDER bilan bir vaqtda ishlatish befoyda):

PREG_PATTERN_ORDER
Agar bu bayroq o'rnatilgan bo'lsa, natija quyidagicha tartibga solinadi: $matches elementi naqshning to'liq mosliklari massivini o'z ichiga oladi, $matches elementi birinchi pastki naqshning ko'rinishlari qatorini o'z ichiga oladi va hokazo.

Kod misoli

]+>(.*)]+>|U", " misol:
bu sinov
", $out, PREG_PATTERN_ORDER); echo $out . ", " . $out . "\n"; echo $out . ", " . $out . "\n"; ?> Misol natijasi: misol:,
bu sinov
misol: , bu sinov

Ko'rib turganimizdek, $out naqshga to'liq mos keladigan massivni o'z ichiga oladi va $out elementi teglar tarkibidagi pastki qatorlarni o'z ichiga oladi.

PREG_SET_ORDER
Agar bu bayroq o'rnatilgan bo'lsa, natija quyidagicha tartiblanadi: $matches elementida birinchi hodisalar to'plami, $matches elementida ikkinchi hodisalar to'plami va hokazo.

Kod misoli

]+>(.*)]+>|U", " misol:
bu sinov
", $out, PREG_SET_ORDER); echo $out . ", " . $out . "\n"; echo $out . ", " . $out . "\n"; ?> Misol natijasi: misol: misol:
bu sinov
, bu sinov

Bunday holda, $matches massivi birinchi hodisalar to'plamini o'z ichiga oladi, ya'ni: $matches elementi butun naqshning birinchi takrorlanishini o'z ichiga oladi, $matches elementi birinchi pastki naqshning birinchi takrorlanishini o'z ichiga oladi va hokazo. Xuddi shunday, $matches massivida har bir topilgan to'plam uchun ikkinchi moslik to'plami va boshqalar mavjud.

PREG_OFFSET_CAPTURE
Agar ushbu bayroq ko'rsatilgan bo'lsa, topilgan har bir pastki satr uchun uning manba qatoridagi o'rni ko'rsatiladi. Shuni esda tutish kerakki, ushbu bayroq qaytarilgan ma'lumotlarning formatini o'zgartiradi: har bir hodisa massiv sifatida qaytariladi, uning nol elementi topilgan pastki qatorni va birinchi element ofsetni o'z ichiga oladi.

Hech qanday bayroq ishlatilmasa, sukut bo'yicha PREG_PATTERN_ORDER ishlatiladi.

Qidiruv chapdan o'ngga, chiziq boshidan amalga oshiriladi. Ixtiyoriy ofset parametri qidiruv uchun muqobil boshlang'ich pozitsiyasini belgilash uchun ishlatilishi mumkin. Xuddi shunday natijaga mavzuni substr()($subject, $offset) bilan almashtirish orqali erishish mumkin.

Topilgan namunaning takrorlanish sonini (nol bo'lishi mumkin) yoki bajarish paytida xatolik yuz bergan bo'lsa, FALSE qaytaradi.

Kod misoli

Kod misoli

qalin matnmeni bosing";preg_match_all("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $ mos); uchun ($i=0; $i< count($matches); $i++) { echo "matched: " . $matches[$i] . "\n"; echo "part 1: " . $matches[$i] . "\n"; echo "part 2: " . $matches[$i] . "\n"; echo "part 3: " . $matches[$i] . "\n\n"; } ?>Misol natijasi: mos keldi: qalin matn 1-qism: 2-qism: qalin matn 3-qism: mos keldi: meni bosing 1-qism: 2-qism: meni bosing 3-qism:

preg_quote

Funktsiya preg_quote- Muntazam iboralardagi qochish belgilari

Sintaksis

ip preg_quote(string str[, string limiter])

preg_quote() funktsiyasi str satrini oladi va har bir chiqish belgisidan oldin teskari chiziq qo'shadi. Agar skriptni bajarish jarayonida qiymati o'zgarishi mumkin bo'lgan shablonni kompilyatsiya qilishda satr o'zgaruvchilari ishtirok etsa, bu foydali bo'lishi mumkin.

Agar ixtiyoriy ajratuvchi parametr ko'rsatilgan bo'lsa, u ham o'chiriladi. Bu PCRE funksiyalarida ishlatiladigan ajratuvchidan qochish uchun foydalidir. Eng keng tarqalgan ajratuvchi "/" belgisidir.

Muntazam iboralarda quyidagi belgilar xizmat belgilari hisoblanadi: . \\ + *? [ ^ ] $ () ( ) = !< > | :

Kod misoli

Kod misoli

". $word."", $textbody); echo $textbody; ?> Natijaga misol: Bu kitob *juda* topish qiyin.

preg_replace

Funktsiya preg_replace- Qidiruvni amalga oshiradi va muntazam ifoda bilan almashtiradi

Sintaksis

aralashgan preg_replace(aralash naqsh, aralash almashtirish, aralash mavzu [, int chegarasi])

Naqsh mos keladigan mavzuni qidiradi va ularni almashtirish bilan almashtiradi. Agar chegara parametri ko'rsatilgan bo'lsa, shablonning chegaraviy hodisalari almashtiriladi; chegara o'tkazib yuborilsa yoki -1 ga teng bo'lsa, naqshning barcha holatlari almashtiriladi.

O'zgartirish \\n yoki (PHP 4.0.4 dan beri) $n shaklidagi havolalarni o'z ichiga olishi mumkin, ikkinchisiga afzallik beriladi. Har bir bunday havola n-qavsdagi kichik naqshga mos keladigan pastki qator bilan almashtiriladi. n 0 dan 99 gacha qiymatlarni qabul qilishi mumkin, \\0 (yoki $0) mos yozuvlar butun naqshning paydo boʻlishiga mos keladi. Kichik naqshlar quyidagilardan boshlab raqamlanadi. chapdan o'ngga, biridan boshlab.

Pastki naqsh havolalaridan foydalangan holda joker belgilarni almashtirishdan foydalanilganda, raqam darhol niqobdan keyin keladigan vaziyat bo'lishi mumkin. Bunday holda, \\n yozuvi xatoga olib keladi: birinchi kichik naqshga havola va undan keyin 1 \\11 sifatida yoziladi, bu o'n birinchi kichik naqshga havola sifatida talqin etiladi. Ushbu tushunmovchilikni birinchi kichik naqshga alohida havolani ko'rsatadigan, keyin esa 1 raqamini ko'rsatadigan \$(1)1 konstruktsiyasi yordamida bartaraf etish mumkin.

Kod misoli

Ushbu misolning chiqishi quyidagicha bo'ladi:

Agar funktsiyani bajarish jarayonida naqsh mosligi aniqlansa, o'zgartirilgan mavzu qiymati qaytariladi, aks holda asl mavzu matni qaytariladi.

preg_replace() funktsiyasining dastlabki uchta parametri bir o'lchovli massivlar bo'lishi mumkin. Agar massiv kalitlardan foydalansa, u holda massivga ishlov berishda ular massivda joylashgan tartibda olinadi. Naqsh va almashtirish uchun massivdagi kalitlarni belgilash ixtiyoriy. Agar siz indekslardan foydalanishni tanlasangiz, har bir massivdagi ksort() funksiyasidan o‘zgartirishda ishtirok etadigan naqsh va satrlarga mos kelish uchun foydalaning.

Ayiq qora sekin dangasa itning ustidan sakrab tushdi.

ksort() yordamida biz kerakli natijaga erishamiz:

Sekin qora ayiq dangasa itning ustidan sakrab tushdi.

Agar mavzu parametri massiv bo'lsa, uning har bir elementi uchun naqsh izlash va almashtirish amalga oshiriladi. Qaytarilgan natija ham massiv bo'ladi.

Agar naqsh va almashtirish parametrlari massiv bo'lsa, preg_replace() ikkala massivdan navbat bilan bir juft elementlarni ajratib oladi va ularni qidirish va almashtirish operatsiyasi uchun ishlatadi. Agar almashtirish massivida naqshga qaraganda ko'proq elementlar bo'lsa, almashtirish uchun etishmayotgan elementlar o'rniga bo'sh satrlar olinadi. Agar naqsh massiv bo'lsa va almashtirish satr bo'lsa, massiv naqshining har bir elementi qidiriladi va naqsh bilan almashtiriladi (naqsh o'z navbatida barcha massiv elementlari bo'ladi, almashtirish qatori esa o'zgarmas qoladi). Naqsh satr va almashtirish massiv bo'lgan variant mantiqiy emas.

/e modifikatori preg_replace() funktsiyasining harakatini shunday o'zgartiradiki, almashtirish parametri zarur almashtirishlarni amalga oshirgandan so'ng, PHP kodi sifatida talqin qilinadi va shundan keyingina almashtirish uchun ishlatiladi. Ushbu modifikatordan foydalanganda ehtiyot bo'ling: almashtirish parametri to'g'ri PHP kodini o'z ichiga olishi kerak, aks holda preg_replace() funksiyasiga qo'ng'iroqni o'z ichiga olgan qatorda sintaksis xatosi paydo bo'ladi.

Kod misoli: Bir nechta naqshlar bilan almashtirish

Ushbu misol chiqadi:

$startDate = "5/27/1999";

Kod misoli: /e modifikatoridan foydalanish

]*>)/e", ""\\1".strtoupper("\\2")."\\3"", $html_body); ?>

Kod misoli: Barcha HTML teglarini bosh harfga aylantiring

]*?>.*?"si", // JavaScript-ni kesib oling ""<[\/\!]*?[^<>]*?>"si", // HTML teglarini ajratadi ""([\r\n])[\s]+"", // Bo'shliq belgilarini ""&(quot|#34);"i" , // ""&(amp|#38);"i", ""&(lt|#60);"i", ""&(gt|#62);"i", ""& HTML ob'ektlarini almashtiradi. (nbsp|#160);"i", ""&(iexcl|#161);"i", ""&(cent|#162);"i", ""&(funt|#163) ;" i", ""&(nusxalash|#169);"i", ""(\d+);"e"); // PHP kodi sifatida izohlang $replace = massiv ("", "", "\\1", "\"", "&", "<", ">", " ", chr(161), chr(162), chr(163), chr(169), "chr(\\1)"); $matn = preg_replace($search, $almashtirish, $hujjat); ?>

preg_replace_callback

Funktsiya preg_replace_callback- Qayta qo'ng'iroq qilish funktsiyasidan foydalangan holda muntazam ifodalarni qidirish va almashtirishni amalga oshiradi

Sintaksis

aralashgan preg_replace_callback(aralash naqsh, qayta qo'ng'iroq qilish, aralash mavzu [, int limiti])

Ushbu funktsiyaning xatti-harakati preg_replace() ga o'xshaydi, bundan mustasno, almashtirish parametri o'rniga, kirish parametri sifatida topilgan hodisalar qatoridan uzatiladigan qayta qo'ng'iroq qilish funksiyasini belgilashingiz kerak. Kutilgan natija almashtiriladigan satrdir.

Kod misoli

\s*\w|", create_function(// Bu holatda bitta qo'shtirnoqlardan foydalanish muhim, // muqobil barcha belgilardan qochishdir "$" "$matches", "return strtolower($matches);"), $line ); echo $line; ) fclose($fp); ?>

preg_split

Funktsiya preg_split- Muntazam ifoda orqali qatorni ajratadi

Sintaksis

massiv preg_split(string naqsh, satr mavzusi [, int chegarasi [, int bayroqlari]])

Berilgan satr mavzusining pastki satrlaridan tashkil topgan massivni qaytaradi, chegaralar bo'ylab ajratilgan naqsh mos keladi.

Agar chegara parametri ko'rsatilgan bo'lsa, funktsiya chegara pastki satrlaridan ko'pini qaytarmaydi. -1 ning maxsus chegara qiymati chegarani bildirmaydi, bu boshqa ixtiyoriy bayroqlar parametrini belgilash uchun juda foydali.

Bayroqlar quyidagi bayroqlarning istalgan kombinatsiyasi bo'lishi mumkin (ulanish "|" operatori yordamida amalga oshiriladi):

PREG_SPLIT_NO_EMPTY
Agar ushbu bayroq ko'rsatilgan bo'lsa, preg_split() funktsiyasi faqat bo'sh bo'lmagan pastki qatorlarni qaytaradi.

PREG_SPLIT_DELIM_CAPTURE
Agar bu bayroq ko'rsatilgan bo'lsa, ajratuvchi naqshdagi qavs ichiga olingan ifoda ham berilgan satrdan chiqariladi va funksiya tomonidan qaytariladi. Ushbu bayroq PHP 4.0.5 da qo'shilgan.

PREG_SPLIT_OFFSET_CAPTURE
Agar ushbu bayroq ko'rsatilgan bo'lsa, har bir topilgan pastki qator uchun uning manba qatoridagi o'rni ko'rsatiladi. Shuni esda tutish kerakki, ushbu bayroq qaytarilgan ma'lumotlarning formatini o'zgartiradi: har bir hodisa massiv sifatida qaytariladi, uning nol elementi topilgan pastki qatorni va birinchi element ofsetni o'z ichiga oladi.

Kod misollari

Agar ochilish qavsdan keyin " ?: ", satr olinmaydi va joriy pastki naqsh raqamlanmagan. Masalan, agar "oq malika" qatori ((?:red|white) (shoh|qirolicha)) naqshga mos kelsa, "white queen" pastki qatorlari. " va " malika" va ular mos ravishda 1 va 2 raqamlari bilan raqamlanadi:

$r="/the ((?:red|oq) (qirol|qirolicha))/"; 0="oq qirol"; 1="oq qirol"; 2="shoh";

Muntazam iboralar haqida ko'proq ma'lumot:


Oddiy ifodalarni tekshirish xizmatlari:


Batafsil o'qing: Kutubxona jingalak PHP da
.

Muntazam ifodalar ishlab chiquvchilar uchun juda foydali vositadir. Ularning yordami bilan siz matn, so'z yoki boshqa belgilarni topishingiz, belgilashingiz yoki almashtirishingiz mumkin. Bugungi maqolada har qanday veb-ishlab chiquvchiga kerak bo'ladigan 15 ta eng foydali oddiy iboralar mavjud.

Muntazam iboralar bilan tanishtirish

Ko'pgina yangi ishlab chiquvchilar oddiy iboralarni tushunish va ulardan foydalanishni juda qiyin deb bilishadi. Aslida, hamma narsa ko'rinadigan darajada qiyin emas. To'g'ridan-to'g'ri oddiy iboralarga o'tishdan oldin, ularning foydali va ko'p qirrali kodi bilan, keling, asosiy narsalarni ko'rib chiqaylik:

Oddiy ifoda sintaksisi

Muntazam ifoda vositalari
foo "foo" qatori
^foo String "foo" bilan boshlanadi
foo$ Satr "foo" bilan tugaydi
^foo$ "foo" qatorda faqat bir marta uchraydi
a, b yoki c
har qanday kichik harf
[^A-Z] bosh harfda bo'lmagan har qanday belgi
(gif|jpg) "Gif" va "jpeg" degan ma'noni anglatadi
+ Bir yoki bir nechta kichik harflar
Har qanday raqam, nuqta yoki minus belgisi
^{1,}$ Har qanday so'z, kamida bitta harf, raqam yoki _
()() wy, wz, xy yoki xz
(^A-Za-z0-9) Har qanday belgi (raqam yoki harf emas)
({3}|{4}) Uch harf yoki 4 raqamni bildiradi

Muntazam ifodalar uchun PHP funksiyalari

Funktsiya Tavsif
preg_match() Preg_match() funktsiyasi berilgan naqsh bo'yicha satrni qidiradi, agar satr topilsa "true", aks holda "false" qiymatini qaytaradi.
preg_match_all() preg_match_all() funksiyasi naqsh tomonidan berilgan satrning barcha takrorlanishini topadi
preg_replace() Preg_replace() funksiyasi ereg_replace() funksiyasi bilan bir xil ishlaydi, bundan tashqari oddiy iboralar ham qidiruv naqshini, ham topilgan qiymatni almashtirish uchun qatorni belgilash uchun ishlatilishi mumkin.
preg_split() Preg_split() funksiyasi split() funksiyasi bilan bir xil, bundan mustasno, oddiy ifoda qidiruv namunasi uchun parametr sifatida ishlatilishi mumkin.
preg_grep() preg_grep() funksiyasi kirish massivining barcha elementlarini qidiradi va muntazam ifoda naqshiga mos keladigan barcha elementlarni qaytaradi.
preg_quote() Muntazam ifoda belgilaridan qochadi

Domen nomini tekshirish

String to'g'ri domen nomi yoki yo'qligini tekshirish

$url = "http://komunitasweb.com/"; if (preg_match("/^(http|https|ftp)://(*(?:.*)+):?(d+)?/?/i, $url)) ( echo "Sizning urlingiz yaxshi ."; ) else ( "Noto'g'ri url." aks-sadosi; )

Matnda so'zlarni ajratib ko'rsatish

Bu juda foydali muntazam ibora, siz undan kerakli so'zni topib, uni ajratib ko'rsatish uchun ishlatishingiz mumkin. Qidiruv natijalarini ko'rsatish uchun ayniqsa foydali.

$text = "KomunitasWeb dan namunaviy jumla, regex veb-dasturlashda mashhur bo'ldi. Endi biz regexni o'rganamiz. Vikipediyaga ko'ra, Regular iboralar (regex yoki regexp sifatida qisqartirilgan, ko'plik shakllari regexs, regexps yoki regexen) rasmiy shaklda yoziladi. muntazam ifoda protsessori tomonidan talqin qilinadigan til”; $matn = preg_replace("/b(regex)b/i", " 1", $matn); echo $matn;

WordPress blogida qidiruv natijalarini ajratib ko'rsatish

Oldingi misolda aytib o'tilganidek, ushbu kod misoli qidiruv natijalarida foydalidir va bu xususiyatni wordpress blogida amalga oshirishning ajoyib usuli mavjud.

Search.php faylingizni oching va the_title() funksiyasini toping. Uni quyidagi kod bilan almashtiring:

echo $title;

Endi, ushbu satrning tepasiga ushbu kodni qo'shing:

\0", $title); ?>

Search.php faylini saqlang va style.css ni oching. Quyidagi qatorni qo'shing:

Strong.search-parcha (fon: sariq; )

HTML hujjatidan barcha tasvirlarni olish

Agar veb-sahifadagi barcha rasmlarni olishingiz kerak bo'lsa, bu kodni yaratish oson bo'lishi kerak.CURL kuchidan foydalanib, tasvir yuklovchini osongina yaratishingiz mumkin.

$tasvir = massiv(); preg_match_all("/(img|src)=("|\")[^"\">]+/i", $data, $media); sozlanmagan ($ma'lumotlar); $data = preg_replace("/(img|src)("|\"|="|=\")(.*)/i", "$3", $media); foreach ($ma'lumotlar $url sifatida) ( $info = pathinfo($url); if (isset($info["kengaytma"])) (if (($info["kengaytma"] == "jpg") || ($info["kengaytma"] == "jpeg") || ($info["kengaytma"] == "gif") || ($info["kengaytma"] == "png")) array_push($ rasmlar, $url); ) )

Takroriy so'zlarni olib tashlang (katta harflar farq qilmaydi)

Yozish paytida so'zlarni tez-tez takrorlaysizmi? Bu muntazam ifoda yordam beradi.

$matn = preg_replace("/s(w+s)1/i", "$1", $matn);

Takroriy tinish belgilarini olib tashlash

Xuddi shunday, faqat tinish belgilari uchun. Ikkita vergul bilan xayrlashing.

$matn = preg_replace("/.+/i", ".", $matn);

XML/HTML teglarini qidiring

Bu oddiy funktsiya ikkita argumentni oladi. Birinchisi, siz topishingiz kerak bo'lgan teg, ikkinchisi esa XML yoki HTMLni o'z ichiga olgan o'zgaruvchidir. Shunga qaramay, bu funksiya cURL bilan foydalanish uchun juda qulay.

funksiya get_tag($tag, $xml) ( $tag = preg_quote($tag); preg_match_all("(<".$tag."[^>]*>(.*?).")", $xml, $mos, PREG_PATTERN_ORDER); $ mosligini qaytarish; )

Muayyan atribut qiymatiga ega XHTML/XML teglarini qidiring

Bu funksiya avvalgisiga juda o'xshaydi, faqat tegga kerakli atributni o'rnatishingiz mumkin. Masalan, siz osongina topishingiz mumkin

.

Funktsiya get_tag($attr, $value, $xml, $tag=null) ( if(is_null($tag)) $tag = "\w+"; else $tag = preg_quote($tag); $attr = preg_quote($) attr); $value = preg_quote($value); $tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*". "(["\"])$qiymat\\2[^>]*>(.*?)<\/\\1>/" preg_match_all($tag_regex, $xml, $matches, PREG_PATTERN_ORDER); return $match; )

O'n oltilik rang qiymatlarini toping

Veb-dasturchi uchun yana bir foydali vosita! Bu sizga rangning o'n oltilik qiymatini topish/tekshirish imkonini beradi.

$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "misol 6 muvaffaqiyatli."; )

Maqola sarlavhasini qidirish

Ushbu kod qismi teglar ichidagi matnni topadi va ko'rsatadi , html sahifasida.

$fp = fopen("http://www.catswhocode.com/blog", "r"); while (!feof($fp))( $page .= fgets($fp, 4096); ) $titre = eregi(" (.*)",$page,$regs); echo $regs; fclose($fp);

Apache jurnalini tahlil qilish

Aksariyat saytlar taniqli Apache veb-serverida ishlaydi. Agar sizning saytingiz ulardan biri bo'lsa, nega Apache jurnallarini tahlil qilish uchun PHP va oddiy ifodalardan foydalanmaysiz?

//Jurnallar: Apache veb-serveri //Faqat HTML-fayllarga muvaffaqiyatli xitlar. Sahifani ko'rishlar sonini hisoblash uchun foydalidir. "^((?#mijoz IP yoki domen nomi)S+)s+((?#asosiy autentifikatsiya)S+s+S+)s+[((?#sana va vaqt)[^]]+)]s+"(?: GET|POST|HEAD) ((?#fayl)/[^ ?"]+?.html?)??((?#parameters)[^ ?"]+)? HTTP/+"s+(?#status kodi)200s+((?#bayt uzatildi)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agenti) )[^"]*)"$" //Jurnallar: Apache veb-server //Faqat 404 xatolik "^((?#mijoz IP yoki domen nomi)S+)s+((?#basic autentifikatsiya)S+s+S+) s+[((?#sana va vaqt)[^]]+)]s+"(?:GET|POST|HEAD) ((?#fayl)[^ ?"]+)??((?#parameters)[ ^?"]+)? HTTP/+"s+(?#status kodi)404s+((?#bayt o'tkazildi)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agenti) )[^"]*)"$"

Ikki tirnoqni aqlli tirnoq bilan almashtirish

Agar siz tipografiyani yaxshi ko'radigan bo'lsangiz, oddiy qo'sh tirnoqlarni aqlli tirnoq bilan almashtiradigan ushbu oddiy ibora sizga yoqadi. Xuddi shunday oddiy ibora wordpressda sahifa mazmunida ishlatiladi.

Preg_replace("B"b([^"x84x93x94rn]+)b"B", "?1?", $matn);

Keng qamrovli parol tekshiruvi

Ushbu muntazam ifoda matn maydoniga kamida oltita belgi, raqamlar, tire va pastki chiziq kiritilishini ta'minlaydi.

Matn maydonida kamida bitta katta harf, bitta kichik belgi va bitta raqam bo'lishi kerak.

"A(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?) [-_a-zA-Z0-9](6,)z"

WordPress: Postdan tasvirlarni olish uchun oddiy iboradan foydalanish

Ko'pchiligingiz WordPress foydalanuvchisi bo'lganingiz uchun maqola matnidan barcha tasvirlarni olish va ularni chiqarish imkonini beruvchi kodga ega bo'lish foydali bo'lishi mumkin.

Ushbu koddan foydalanish uchun uni mavzuingizdagi istalgan faylga joylashtirish kifoya.

post_content; $szSearchPattern = "~ ]* />~"; // Barcha rasmlarni olish va natijalarni $aPics preg_match_all($szSearchPattern, $szPostContent, $aPics) da saqlash uchun preg_match_all-ni ishga tushiring; // Bizda kamida 1 ta rasm borligini tekshiring $iNumberOfPics = count($aPics); if ($iNumberOfPics > 0) ( // Endi siz tasvirlar bilan nima qilish kerak bo'lsa shuni qilasiz // Bu misol uchun tasvirlar faqat ($i=0; $i) uchun ko'rsatiladi.< $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>

Avtomatik kulgichlarni yaratish

Wordpress-da qo'llaniladigan yana bir xususiyat shundaki, u tabassum belgilarini avtomatik ravishda tabassum tasviriga almashtirish imkonini beradi.

$texte="Smaylili matn:-)"; echo str_replace(":-)"," ",$matn);