Muntazam iboralar PHP belgilarini almashtirish. PHP muntazam ifodalari. Cheklangan belgilar sinflari

PHP, zamonaviy dasturlash tiliga mos bo'lganligi sababli, ishlab chiquvchiga oddiy iboralardan foydalanish uchun bir qator funktsiyalarni taklif qiladi. Siz murakkab mezonlar yordamida boshqa satrlardagi satrlarning takrorlanishini qidirishingiz mumkin.

  • PREG_PATTERN_ORDER;
  • PREG_SET_ORDER.

1-variant bo'yicha saralash qidiruv natijalarini oddiy ifoda raqami bo'yicha guruhlarga ajratadi (standart). Ikkinchi holda, natijalar qatordagi joylashuvi bo'yicha guruhlanadi.

Belgi - shablon elementi

Shablon belgilarda ishlashini yodda tutish kerak. Dasturlash uzoq vaqt davomida "belgi" ma'lumotlar turi nima ekanligini unutgan. Zamonaviy tillar "tor" tushunchasidan pastga tushmaydi, ammo naqshga kelsak, siz tushunishingiz kerak: bu erda belgilar manipulyatsiya qilinadi.

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

  • a - shablonning o'ziga xos elementi - belgi.
  • a-z shablon elementi, shuningdek, bitta belgi, lekin faqat a dan z gacha bo'lgan qiymat bilan - barchasi lotincha kichik harflarda.
  • 0-9 - bitta raqam, har qanday raqam, lekin 1-3 - faqat 1, 2 yoki 3.

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

Funktsiya shabloni

PHP preg match all standart muntazam ifoda sintaksisidan foydalanadi. ularda ko'rsatilgan belgilardan birini ko'rsating:

  • 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 belgi.
  • \d va \D - raqamli yoki raqamli bo'lmagan.

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

  • n “kam emas” takrorini bildiradi;
  • m - "endi yo'q" ning takrorlanishi.

Sintaksis shablonlarni yaratishning ko'plab variantlarini taqdim etadi, ammo asosiy narsalardan, ya'ni murakkab elementlar va kombinatsiyalar mavjud bo'lmagan o'z qo'lingiz bilan yozilgan oddiylaridan boshlash yaxshidir.

Oddiy qilib aytganda, zarur bo'lgan haqiqiy belgilarni sanab, ularning kerakli miqdorlarini ko'rsatib, "^" belgisi satrning boshiga va "$" belgisiga mos kelishini hisobga olib, siz oddiy shablonlarni yaratishingiz mumkin. Malakali mutaxassislarning haqiqiy, yaxshi disk raskadrovka qilingan muntazam ifodalarini tahlil qilish orqali siz preg match allning murakkab ilovalarini yaratish uchun mustahkam bilimga ega bo'lishingiz mumkin. PHP arsenali faqat shu ikki funktsiya bilan chegaralanib qolmaydi, lekin ular eng ko'p qo'llaniladi.

Oddiy amaliyot

Butun son namunasi:

  • "/*/"

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

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

Xuddi shunday:

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

Preg uchun o'zingizning shablonlaringizdan foydalanish, ularning Internetdagi misollari, veb-sayt sahifalari va boshqa manbalar kodini tahlil qilish o'zingizning shablonlar kutubxonangizni yaratishga imkon beradi.

Ma'lumotni topishning ko'plab variantlari mavjud. Xususan, yuqorida keltirilgan 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, shuningdek, boshqa tillardagi shunga o'xshash funksiyalardan foydalanish amaliyot, diqqat va shablonlarning to'g'riligini oldindan tekshirishni talab qiladi.

Ushbu maqola PHP regexp misollari tanlovini taqdim etadi. Muntazam ifoda misollarining juda yaxshi va foydali to'plami. Barcha muntazam ifoda misollari PHP uchun qabul qilinadi. Sog'ligingiz uchun zavqlaning!

Domen nomini tekshirish misoli

Ushbu 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

Matndagi so'zni ajratib ko'rsatishga misol

Matndagi kerakli so'zni qidirish 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 kiriting:

\0", $title); ?>

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

Strong.search-parcha (fon: sariq; )

dan tasvirlarni olishga misolHTML regexp usuli

Muntazam iboralar yordamida PHP kodining ushbu qismi barcha tasvirlar va ularning URL manzillarini qidiradi.

$tasvirlar = 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 o'chirish (katta harflar hisobga olinmaydi)

Tez-tez takrorlanadigan so'zlar bormi? 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 shu narsa, faqat takrorlanadigan nuqtalar bilan.

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

XML/HTML teglarini moslashtirish

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 funktsiyaga 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 topish

Berilgan satrlardagi o'n oltilik rang qiymatlariga mos keladigan muntazam ifodaning ajoyib namunasi. Bu nima uchun? Ehtimol, siz CSS kodini siqish xizmatini yoki shunga o'xshash narsalarni yozmoqchisiz.

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

Qidiruv misoliberilgan sahifadagi sarlavha

Regexp bilan PHP kodining ushbu qiziqarli namunasi teglar orasidagi matnni topadi va qaytaradi Va.

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

Apache jurnalini tahlil qilish

Aksariyat saytlar taniqli Apache serverlarida ishlaydi. Agar sizning saytingiz ham unda ishlayotgan bo'lsa, php regexp yordamida server jurnalini tahlil qilishingiz mumkin.

//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) ((?#file)/[^ ?]+?.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) )[^"]*)"$"

Parol murakkabligini tekshirishga misol

Parolning murakkablik darajasini tekshiradigan muntazam ifodaning ajoyib namunasi. Parol 6 ta belgidan iborat bo'lishi va kamida bitta katta harf, kichik harf va raqamdan iborat 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 misol kodi matn emotsiyasini grafik belgisiga o'zgartiradi. Qiziqarli va foydali PHP parchasi.

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

Rasmlarni olish uchun oddiy iboraga misolhtml kodi

Aytish joizki, ushbu PHP kodi 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 // Bu misolda ular shunchaki monitorda ($i=0; $i) ko‘rsatiladi.< $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>

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

Funktsiya tavsifi:

Preg_replace funktsiyasi muntazam ifoda (naqsh) ning satrdagi (mavzu) ma'lumotlar bilan mos kelishini qidiradi va ularni almashtirishda topilgan ma'lumotlar bilan almashtiradi.

Dalil

Tavsif

naqsh

Majburiy argument. Oddiy ifoda (qidiruv namunasi)

qator, massiv

almashtirish

Majburiy argument. Ma'lumotni almashtirish uchun ishlatiladigan ma'lumotlarni o'z ichiga olgan qator yoki massiv Mavzu

Havolalar uchun \$(1) shaklidagi konstruksiyadan ham foydalanishingiz mumkin, u \$1 ga ekvivalent; bu konstruksiya havoladan keyin darhol raqam (\$(1)1) boʻlsa ishlatiladi.

qator, massiv
Mavzu Majburiy argument. O'zgartiriladigan ma'lumotlarni o'z ichiga olgan qator yoki massiv. qator, massiv
chegara

Ixtiyoriy argument. Maksimal almashtirishlar soni. Standart -1 (cheksiz)

int
hisoblash

Ixtiyoriy argument. O'zgartirishlar sonini o'z ichiga olgan o'zgaruvchi.

int

preg_replace() funksiyasidan /e modifikatori bilan foydalanish mumkin. Ushbu modifikator mavjud bo'lganda, almashtirish parametri PHP kodi sifatida talqin qilinadi va keyin almashtirish uchun ishlatiladi.

Oddiy ifodalar

Alohida, biz tushunmasdan funktsiyaning ishini tushunish juda qiyin (agar imkonsiz bo'lsa) bo'lgan muntazam iboralar haqida to'xtashimiz kerak. preg_replace().

Muntazam iboralarning juda yaxshi tavsifi wikipedia.org saytida berilgan, muntazam iboralardan foydalanishning asosiy nuqtalari ham tasvirlangan.

Misollar:

1-misol:

Ushbu misolda biz qavs ichida joylashgan barcha raqamlarni yulduzcha bilan almashtiramiz.

2-misol:

Ushbu misolda biz butun naqshga mos keladigan satrni \$1 havolasidagi birinchi kichik naqshga mos keladigan ma'lumotlar bilan almashtiramiz. Boshqacha qilib aytganda, "/(\w+) (\d+) (\w+)/" ga mos keladigan "3 ta olma" (\w+) ga mos keladigan "bor" bilan almashtiriladi.

3-misol:

Ushbu misol, agar siz massivlarni naqsh va almashtirish sifatida ishlatsangiz nima bo'lishini ko'rsatadi.

4-misol:

Ushbu misol, agar siz massivlarni naqsh, almashtirish va mavzu sifatida ishlatsangiz nima bo'lishini ko'rsatadi.

5-misol:

Ushbu misolda /e modifikatoridan foydalanish ko'rsatilgan, ya'ni almashtirish PHP kodi sifatida talqin qilinganda. Quyida belgilarni kichikdan katta harfga o'tkazish ko'rsatilgan.

6-misol:

Bu misol count argumentidan foydalanishni ko'rsatadi. Bu erda natija 2 ga teng bo'ladi, shuning uchun ikkita almashtirish bor edi.

aralashgan preg_match(satr namunasi, satr mavzusi [, massiv va mos kelishi [, int bayroqlari [, int ofset]]])

Berilgan matn mavzusida naqsh naqshiga mos keladigan narsalarni qidiradi

Agar qo'shimcha mos keladigan parametr ko'rsatilgan bo'lsa, u qidiruv natijalari bilan to'ldiriladi. $matches elementi butun naqshga mos keladigan satr qismini, $matches qatorning birinchi pastki naqshga mos keladigan qismini va hokazolarni o'z ichiga oladi.

bayroqlar quyidagi qiymatlarni qabul qilishi mumkin:

PREG_OFFSET_CAPTURE

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

Qo'shimcha bayroqlar parametri PHP 4.3.0 dan beri mavjud.

Qidiruv chapdan o'ngga, chiziq boshidan amalga oshiriladi. Ixtiyoriy ofset parametri qidiruv uchun muqobil boshlang'ich pozitsiyasini belgilash uchun ishlatilishi mumkin. Qo'shimcha ofset parametri PHP 4.3.3 dan beri mavjud.

Izoh: Ofset parametridan foydalanish funksiyani chaqirganda mos keladigan satrni substr($subject, $offset) bilan almashtirishga teng emas. preg_match_all(), chunki naqsh kabi shartlarni o'z ichiga olishi mumkin ^ , $ yoki (? . Taqqoslash:

Bu misol esa

Funktsiya preg_match() topilgan mosliklar sonini qaytaradi. Bu 0 (hech qanday moslik topilmadi) va 1 bo'lishi mumkin, chunki preg_match() topilgan birinchi o'yindan keyin ishlashni to'xtatadi. Agar siz barcha mosliklarni topishingiz yoki hisoblashingiz kerak bo'lsa, funktsiyadan foydalanishingiz kerak preg_match_all(). Funktsiya preg_match() qaytadi FALSE bajarish jarayonida xatolik yuzaga kelgan taqdirda.

Ishora: Funktsiyadan foydalanmang preg_match(), agar berilgan satrda pastki qator mavjudligini tekshirish kerak bo'lsa. Buning uchun foydalaning strpos() yoki strstr(), chunki ular bu vazifani tezroq bajaradilar.


2-misol. Matndagi “web” so‘zini qidiring

/*
Naqshdagi \b maxsus ketma-ketligi so'z chegarasini bildiradi,
shuning uchun "veb" so'zining faqat alohida ko'rinishi mos keladi
niqob, "to'r" yoki "o'rgimchak to'ri" dan farqli o'laroq.
*/
agar (preg_match("/\bweb\b/i" , "PHP - bu tanlagan veb-skript tili.")) {
aks-sado "Kirish topildi.";
) boshqa (
aks-sado "Hech qanday yozuv topilmadi.";
)preg_match ("/\bweb\b/i", "PHP - bu veb-sayt skriptlari tili.")) {
aks-sado "Kirish topildi.";
) boshqa (
aks-sado "Hech qanday yozuv topilmadi.";
}
?>

Men uzoq vaqtdan beri muntazam iboralarni tushunishni xohlayman. Garchi "aniqlash" kuchli so'z bo'lsa-da. Muntazam iboralar ustasi bo'lishning buyuk san'atini egallash uchun siz ular bilan doimo ishlashingiz kerak. Sintaksis, maxsus belgilar va modifikatorlarni o'rganishning o'zi etarli emas - siz ulardan foydalanish imkoniyatiga ega bo'lishingiz kerak. Va foydalanish qobiliyati tajriba bilan birga keladi.

Ushbu postda men o'zim tushungan muntazam iboralarni ishlatish misollarini joylashtiraman.

Maxsus belgilar jadvali

Maxsus xarakter Tavsif
\ Qochish belgisi. Misol: ‘/seo\/smo/’- seo/smo o'z ichiga olgan qatorga mos keladi.
^ Ma'lumotlar belgisi boshlanishi. Misol: ‘/^seo/’— seo so‘zi bilan boshlanadigan qatorga mos keladi.
$ Ma'lumotlarning oxiri belgisi. Misol: ‘/blog$/’— blog soʻzi bilan tugagan qatorga mos keladi.
. Satr tasmasidan boshqa har qanday belgi. Misol: ‘/seo.ult/’- seopult, seo9ult, seo@ult va boshqalar qatoriga mos keladi.
Ushbu qavslar ichida har qanday belgilar berilgan pozitsiyada paydo bo'lishi mumkin bo'lgan belgilar keltirilgan, lekin faqat bittasi. Misol: '/seul/'— faqat seopult, seokult yoki seomultni o'z ichiga olgan qatorlar mos keladi.
| Yoki. Quyida misol.
() Submask.
? Oldingi belgi yoki pastki naqshning bir yoki nol takrorlanishi.
* Oldingi belgi yoki pastki naqshning istalgan soni. Shu jumladan nol.
+ Bir yoki bir nechta hodisa.
Misol: ‘/se+(op|om)?.*t/’- s harfi, keyin bir yoki bir nechta e harfi, undan keyin op yoki om birikmasi bir marta paydo bo'lishi mumkin yoki bir marta bo'lmasligi mumkin, keyin har qanday belgilar soni va t harfi.
(a,b) a dan b gacha oldingi belgi yoki pastki naqshning takrorlanish soni. Misol: (0,) - * bilan bir xil, (0,1) - ?, (3,5) bilan bir xil - 3, 4 yoki 5 marta takrorlash.

Oddiy ifodalardan foydalangan holda PHP skriptlarining oddiy misollari:

1) Oldingi va keyingi iboralar.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 // Boxdan keyin ing kelgan so‘zni toping. Agar so'z topilsa, funktsiya rost, topilmasa, false qaytaradi.$pattern1 = "/Box(?=ing)/" ; preg_match($pattern1, "Box Day"); // noto'g'ri preg_match ($pattern1, "Boks kuni" ); // rost // qutidan keyin ing qo'shilmagan so'zni toping. Agar so'z topilsa, funktsiya rost, topilmasa, false qaytaradi.$pattern2 = "/box(?!ing)/" ; preg_match($pattern2, "iPhone va iPad uchun quti"); // haqiqiy preg_match ($pattern2, "Boks kuni nima?"); // noto'g'ri preg_match ($pattern2, "css-moz-box-shadow" ); // rost // ing oldidan katakcha qo‘yilmagan so‘zni toping. Agar so'z topilsa, funktsiya rost, topilmasa, false qaytaradi.$pattern3 = "/(?

[^<]+?~","seo blog",$text); echo $text; ?>

3) Berilgan saytning Alexa Rank qiymatini oling va ko'rsating.

1 2 3 4 5 6 7 8 9 "#
(.*?)
#si", file_get_contents ( "http://www.alexa.com/siteinfo/($url)"), $a ); trimni qaytarish (str_replace ("," , "" , strip_tags ($a [ 1 ] ) ) ); ) $alexa = alexa($url); echo $alexa ; ?>

(.*?)

#si", file_get_contents("http://www.alexa.com/siteinfo/($url)"), $a); qayta trim(str_replace(",","",strip_tags($a))); ) $alexa = alexa($url); echo $alexa; ?>

4) Sahifaning sarlavhasini oling va ko'rsating.

1 2 3 4 5 (.*)<\/title>/s" , $str , $m ); echo $m [ 1 ] ; ?>

(.*)<\/title>/s", $str, $m); echo $m; ?>

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 \n \r \t ]/", "" , $content ); // yangi qator va tab belgilarni bo'sh joylar bilan almashtiring$content = preg_replace ("/(2,)/" , " " , $content ); // 2 dan ortiq bo'sh joyni bitta bilan almashtiring preg_match_all("/ ]*href=(?:"| \" )(.*)(?:"|\" )[^<>]*>(.*)<\/a>/iU", $content , $links ); // agar havolalarni to'plang (sizeof ($links [ 1 ] ) > 0 ) // havolalar topilsa( $out = massiv (); // tashqi havolalar massivi foreach ($links [ 1 ] sifatida $v ) ( if (preg_match ("/http:\/\/(www\.)(0,1)" . $domain . "/i" , $v )) // ichki havolalarni olib tashlang( davom et ; ) agar ( preg_match ( "/(http:|https:)?\/\/(www\.)(0,1)(.*)/i", $v )) // tashqi havola( $out = $v; ) ) $out ni qaytarish; ) qaytish massivi (); ) $domain = "sayt" ; $content = file_get_contents ("http://site/" ); $getoutlinks = getoutlinks($content, $domain); uchun ($i = 0; $i<= count ($getoutlinks ) ; $i ++ ) { echo $getoutlinks [ $i ] . "
" ; } ?>

]*href=(?:"|\")(.*)(?:"|\")[^<>]*>(.*)<\/a>/iU", $content, $links); // havolalarni to'plang, agar (sizeof($links) > 0) // agar havolalar topilsa ( $out = array(); // foreach tashqi havolalar massivi ($links kabi) $v ) ( agar (preg_match("/http:\/\/(www\.)(0,1)".$domain."/i", $v)) // ichki havolalarni o'chirib tashlang (davom etish; ) agar (preg_match ("/(http:|https:)?\/\/(www\.)(0,1)(..com/"); $getoutlinks = getoutlinks($content, $domain); uchun ( $i = 0;$i<= count($getoutlinks); $i++) { echo $getoutlinks[$i]."
"; } ?>

Qayerda:
preg_replace— Oddiy ifoda yordamida qidirish va almashtirishni amalga oshiradi.
preg_match— muntazam ifodaga nisbatan tekshirishni amalga oshiradi.
preg_match_all— barcha mosliklarni topadi, preg_match esa faqat birinchisini topadi.
file_get_contents— fayl mazmunini bir qator sifatida olish.
kesish— satr boshida va oxiridagi boʻshliqlarni olib tashlaydi.
str_replace— qidiruv satrini almashtirish qatori bilan almashtiradi.
strip_tags— satrdan html va php teglarini olib tashlaydi.
sizeof— oʻzgaruvchidagi elementlar sonini oladi.
hisoblash— massiv elementlari sonini yoki obyekt xossalari sonini hisoblaydi.