(PHP 4, PHP 5, PHP 7)

preg_replace – atlieka paiešką ir pakeičia naudojant įprastą reiškinį

Parametrų sąrašas

Šablonas, kurio ieškote. Gali būti arba eilutė, arba eilučių masyvas.

Taip pat yra keletas PCRE modifikatorių, įskaitant senąjį " e" (PREG_REPLACE_EVAL), būdingas tik šiai funkcijai.

Pakeitimas

Keičiama eilutė arba eilučių masyvas. Jei šis parametras yra eilutė, o šablonas yra masyvas, visi šablonai bus pakeisti šia eilute. Jei ir raštas, ir pakeitimas yra masyvai, kiekvienas šablono elementas bus pakeistas atitinkamu elementu iš pakeitimo . Jei pakaitiniame masyve yra mažiau elementų nei šablono masyve, visi papildomi šablono šablonai bus pakeisti tuščiomis eilutėmis.

pakeitime gali būti nuorodų, pvz \\n, arba (nuo PHP 4.0.4) $n, o pastarasis variantas yra geresnis. Kiekviena tokia nuoroda bus pakeista eilute, atitinkančia n-tą posistemį. n gali paimti reikšmes nuo 0 iki 99 ir nuorodą \\0 (arba $0 ) atitinka viso modelio įvykį. Subschemos numeruojamos iš kairės į dešinę, pradedant nuo vieneto. Norint naudoti pasvirąjį brūkšnį, jis turi būti dubliuotas (PHP eilutė "\\\\" ).

Keičiant šablonu naudojant antrinio šablono nuorodas, gali susiklostyti situacija, kai po kaukės iškart eina skaičius (pavyzdžiui, skaičius nustatomas iškart po atitinkamos kaukės). Tokiu atveju negalite naudoti žinomo formos žymėjimo \\1 nuorodoms į posistemius. Įrašyti, pvz. \\11 , supainios preg_replace(), nes negalės išsiaiškinti, ar norite naudoti nuorodą \\1 , po kurio seka skaičius 1 ar norite tiesiog naudoti nuorodą \\11 , po to nieko. Šis nesusipratimas gali būti pašalintas naudojant dizainą \${1}1 naudojant izoliuotą nuorodą $1 , ir kitas skaitmuo 1 .

Kai naudojamas pasenęs modifikatorius eši funkcija pašalina kai kuriuos simbolius (būtent " , " , \ ir NULL) eilutėse, pakeičiančiose atgalines nuorodas. Taip siekiama užtikrinti, kad sintaksė būtų teisinga naudojant atgalines nuorodas vienose arba dvigubose kabutėse (pvz., "strlen(\"$1\")+strlen("$2")"). Įsitikinkite, kad esate susipažinę su PHP eilutės analizės sintaksė, kad tiksliai žinotumėte, kaip atrodys interpretuota eilutė.

Tema

Eilutę arba eilučių masyvą ieškoti ir pakeisti.

Jei objektas yra masyvas, tada paieška ir pakeitimas atliekami kiekviename dalyko masyvo elemente, o grąžinama reikšmė taip pat bus masyvas.

Didžiausias galimas kiekvienos temos eilutės kiekvieno šablono pakeitimų skaičius. Numatytasis yra -1 (be limitų).

Jei nurodyta, šis kintamasis bus užpildytas atliktų pakeitimų skaičiumi.

Grąžinamos vertės

preg_replace() grąžina masyvą, jei objektas yra masyvas, kitu atveju grąžina eilutę.

Jei randama atitiktis, grąžinama nauja temos versija, kitu atveju objektas grąžinamas nepaliestas, klaidos atveju grąžinama NULL.

Klaidos

Naudojant nebenaudojamą „\e“ modifikatorių, pateikiamas E_DEPRECATED klaidos lygis.

Pakeitimų sąrašas Pavyzdžiai

Pavyzdys Nr. 1 Naudojant popiešinius, po kurių rašomas skaičius

2 pavyzdys Masyvų su skaitiniais indeksais naudojimas kaip preg_replace() argumentai

Šio pavyzdžio vykdymo rezultatas:

Meška juoda lėtai peršoko per tinginį šunį.

Surūšiavę šablonus ir pakeitimus pagal raktus, gauname norimą rezultatą:

Šio pavyzdžio vykdymo rezultatas:

Lėtas juodasis lokys peršoko per tinginį šunį.

3 pavyzdys Pakeitimas naudojant kelis modelius

int preg_match_all (eilutės šablonas, eilutės tema, masyvas &atitinka [, int vėliavėlės [, int poslinkis]])

Ieško eilutės temos visų šablono atitikčių ir įdeda rezultatą į atitikmenų masyvą tokia tvarka, kokia nustatoma pagal vėliavėlių derinį.

Radus pirmą atitiktį, tolesnės paieškos bus atliekamos ne nuo eilutės pradžios, o nuo paskutinio rasto įvykio pabaigos.

Pasirenkamas vėliavėlių parametras gali sujungti šias reikšmes (atminkite, kad PREG_PATTERN_ORDER naudojimas tuo pačiu metu kaip PREG_SET_ORDER yra beprasmis):

PREG_PATTERN_ORDER

Jei ši vėliavėlė yra nustatyta, rezultatas bus išdėstytas taip: elemente $matches yra ištisų šablono atvejų masyvas, elemente $matches yra pirmojo pogrupio įvykių masyvas ir pan.

Grąžina rasto šablono atvejų skaičių (gali būti nulis) arba FALSE, jei vykdant įvyko klaidų.


2 pavyzdys: gobšus HTML žymų atitikimas

.*?"si" , // Išpjauna javaScript
"""si" , // Išpjauna HTML žymas
""([\r\n])[\s]+"" , // Apkarpomi tarpų simboliai
""&(quot|#34);"i" , // Pakeičia HTML objektus
""&(amp|#38);"i" ,
""&(lt|#60);"i" ,
""&(gt|#62);"i" ,
""&(nbsp|#160);"i" ,
""&(iexcl|#161);"i" ,
""&(cent|#162);"i" ,
""&(pound|#163);"i" ,
""&(kopija|#169);"i" ,
""(\d+);"e" ); // interpretuoti kaip php kodą $replace = array ("" ,
"" ,
"\\1" ,
"\"" ,
"&" ,
"" ,
" " ,
chr (161),
chr (162),
chr (163),
chr (169),
"chr(\\1)" );$tekstas = preg_replace($paieška, $pakeisti, $dokumentas);
?>

Šiame straipsnyje pateikiamas php regexp pavyzdžių pasirinkimas. Labai gražus ir naudingas reguliariųjų reiškinių pavyzdžių rinkinys. Visi reguliariųjų reiškinių pavyzdžiai yra priimtini PHP. Mėgaukitės tuo dėl savo sveikatos!

Domeno vardo patvirtinimo pavyzdys

Šis php fragmentas patikrina, ar eilutė yra tinkamas domeno pavadinimas.

?:.*)+):?(d+)?/?/i", $url)) ( echo "Jūsų url yra gerai."; ) else ( echo "Neteisingas URL."; )

Žodžio paryškinimo tekste pavyzdys

Labai naudinga reguliarioji išraiška ieškant ir paryškinant norimą žodį tekste. Kodas ypač naudingas kuriant paieškos rezultatų išvestį.

$text = "Pavyzdinis sakinys iš KomunitasWeb, reguliarioji išraiška išpopuliarėjo žiniatinklio programavime. Dabar mes mokomės regex. Remiantis Vikipedija, reguliarieji reiškiniai (sutrumpinami kaip regex arba regexp, su daugiskaitos formomis regexes, regexs arba regexen) rašomi formaliuoju kalba, kurią gali interpretuoti reguliariųjų reiškinių procesorius“; $tekstas = preg_replace("/b(regex)b/i", "1", $tekstas); echo $tekstas;

Paieškos rezultatų paryškinimo „WordPress“ diegimo pavyzdys

Atidarykite failą search.php ir raskite funkciją_title(). Pakeiskite ją šia eilute:

Echo $title;

Dabar prieš pakeistą eilutę įterpkite šį kodą:

Išsaugokite failą search.php ir atidarykite style.css. Pridėkite prie jo šią eilutę:

Strong.search-excerpt (fonas: geltonas; )

Vaizdų gavimo iš HTML naudojant regexp metodą pavyzdys

Ši PHP kodo dalis, naudojanti reguliariąsias išraiškas, ieško visų vaizdų ir jų URL.

$vaizdai = masyvas(); preg_match_all("/(img|src)=("|")[^"">]+/i, $duomenys, $media); unset($duomenys); $duomenys=preg_replace("/(img|src)("|"|="|=")(.*)/i","$3",$media); foreach($duomenys kaip $url) ( $info = kelio info($url); if (isset($info["plėtinys"])) (if (($info["plėtinys"] == "jpg") || ($info["plėtinys"] == "jpeg") ||. ($info["plėtimas"] == "gif") || vaizdai, $url);

Pasikartojančių žodžių pašalinimas (neskiriamos didžiosios ir mažosios raidės)

Ar dažnai kartojasi žodžiai? Tada šis reguliariosios išraiškos pavyzdys jums bus naudingas.

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

Pasikartojančių taškų pašalinimas

Tas pats, tik su pasikartojančiais taškais.

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

XML/HTML žymų atitikimas

Šiai paprasta funkcijai reikalingi du argumentai: žyma (kurią norite atitikti), xml arba html kodas.

Funkcija get_tag($tag, $xml) ( $tag = preg_quote($tag); preg_match_all("(]*>(.*?).")", $xml, $matches, PREG_PATTERN_ORDER); return $matches; )

Ieškokite XHTML / XML žymų su konkrečiomis atributų reikšmėmis

Šis pavyzdys yra panašus į ankstesnę funkciją, tik jūs galite žymiai išplėsti paiešką, pavyzdžiui, rasti.

Funkcija 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($tag_regex = "/]*$attr\s*=\s*") .*?)/" preg_match_all($tag_regex, $xml, $matches, PREG_PATTERN_ORDER); grąžinti $matches; )

Šešioliktainių spalvų reikšmių paieška

Puikus reguliariosios išraiškos, atitinkančios šešioliktaines spalvų reikšmes nurodytose eilutėse, pavyzdys. Kam tai? Galbūt norite parašyti CSS kodo glaudinimo paslaugą ar kažką panašaus.

$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "6 pavyzdys sėkmingas."; )

Pavadinimo paieškos tam tikrame puslapyje pavyzdys

Šis įdomus PHP kodo pavyzdys su regexp randa ir grąžina tekstą tarp ir žymų.

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

Apache žurnalo analizė

Dauguma svetainių veikia gerai žinomuose „Apache“ serveriuose. Jei jūsų svetainė taip pat veikia joje, galite išanalizuoti serverio žurnalą naudodami php regexp.

//Žurnalai: „Apache“ žiniatinklio serveris //Sėkmingi tik HTML failų įvykiai. Naudinga skaičiuojant puslapio peržiūrų skaičių. "^((?#kliento IP arba domeno pavadinimas)S+)s+((?#pagrindinis autentifikavimas)S+s+S+)s+[((?#data ir laikas)[^]]+)]s+"(?: GET|POST|HEAD) ((?#failas)/[^ ?]+?.html?)??((?#parameters)[^ ?]+)? HTTP/+"s+(?#būsenos kodas)200s+((?#baitų perkelta)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#naudotojo agentas) )[^"]*)"$" //Žurnalai: tik Apache žiniatinklio serveris //404 klaidos "^((?#kliento IP arba domeno pavadinimas)S+)s+((?#pagrindinis autentifikavimas)S+s+S+) s+[((?#data ir laikas)[^]]+)]s+"(?:GET|POST|HEAD) ((?#failas)[^ ?"]+)??((?#parametrai)[ ^ ?"]+)? HTTP/+"s+(?#būsenos kodas)404s+((?#baitų perkelta)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#naudotojo agentas) )[^"]*)"$"

Slaptažodžio sudėtingumo tikrinimo pavyzdys

Puikus reguliariosios išraiškos, kuri tikrina slaptažodžio sudėtingumo lygį, pavyzdys. Slaptažodis turi būti sudarytas iš 6 simbolių, jame turi būti bent viena didžioji raidė, mažoji raidė ir skaičius.

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

Tekstinių jaustukų keitimas grafiniais jaustukais

Šis pavyzdinis kodas pakeis tekstinį jaustuką į grafinį. Įdomus ir naudingas PHP fragmentas.

$texte="Tekstas su šypsenėle:-)"; echo str_replace(":-)"," ",$texte);

Reguliarios išraiškos, skirtos vaizdams gauti iš html kodo, pavyzdys

Verta pasakyti, kad šis php kodas naudojamas WordPress vaizdų paieškai ir apdorojimui.


Uždaryti