Rendszeres kifejezések php

A szabályos kifejezések lehetővé teszik, hogy a sztringben megtalálja a mintának megfelelő szekvenciákat. Például a "Vasya (. *) Pupkin" sablon meg fogja találni a sorozatot, amikor a Vasya és a Pupkin szavak között bármi szimbólum létezik. Ha hat számjegyre van szükség, akkor írunk "[0-9]" (például 6-8 számjegyet, majd "[0-9]"). Itt vannak olyan dolgok, mint egy karakterkészlet mutatója és egy mutató a kívánt számhoz:

Szimbólumkészlet helyett bármely szimbólum megjelölése használható - egy időtartam, specifikus szimbólumkészletet adhat meg (az "0-9" szekvenciák támogatottak). Meg lehet adni "a karakterkészlet kivételével".

A php hivatalos dokumentációjában szereplő karakterek számának mutatóját "quantifier" -nek nevezik. A kifejezés kényelmes és nem hordoz semmilyen pletykát. Így a kvantálónak lehet egy meghatározott értéke - egy rögzített (""), vagy mindkettő egy numerikus intervallum ("") és egy absztrakt "bármilyen szám, beleértve a 0" ("*"), "bármely természetes számot "- 1-től végtelenig (" + ":" dokumentum [0-9] +. txt ")," 0 vagy 1 "("? "). Alapértelmezés szerint az adott karakterkészlet számtaniereje egy ("dokumentum [0-9] .txt").

A kombinációk rugalmasabb kereséséhez ezek a "szimbólumkészlet-kvantáló" kötegek metasztruktúrákká alakíthatók.

Mint minden rugalmas eszköz, a szabályos kifejezések rugalmasak, de nem abszolút: alkalmazásuk zónája korlátozott. Például, ha egy vezetékes vonalat a szövegben egy másikra kell cseréltetni, újra rögzíteni, használja a str_replace alkalmazást. A fejlesztők php könnyedén könyörögnek, hogy ne használják ezt a komplex funkciókat ereg_replace vagy preg_replace, mert amikor hívják, van egy folyamat a tolmácsolás, és ez komolyan elfogyasztja a források a rendszer. Sajnos ez a kedvenc rake a kezdő php programozóknak.

Csak akkor használja a szabályos kifejezés funkciókat, ha nem tudja pontosan, hogy mi "van" egy karakterlánc. A példák közül: a kereső kód. amelyben a keresőszövegből a szolgáltatási szimbólumokat és a rövid szavakat vágják, és extra tereket vágnak (vagyis minden szóközt összenyomnak: a "+" helyet egy helyettesíti). E funkciók segítségével ellenőrizem a visszajelzést elhagyó felhasználó e-mailjét. Sok hasznos dolgot lehet tenni, de fontos, hogy szem előtt tartsuk: a rendszeres kifejezések nem mindenhatóak. Például jobb, ha nem tesz egy összetett csere egy nagy szövegben. Végül is, például a "(. *)" Kombináció a programtervben a szöveg összes karakterének keresését jelenti. Ha a sablon nem kötődik a sor elejéhez vagy végéhez, akkor a sablon maga "áthelyezi" a programot a teljes szövegen keresztül, és megkapja a kettős keresést, vagy inkább egy keresést a mezőben. Nem nehéz kitalálni, hogy még egy kombináció "(. *)" Azt jelenti, hogy egy kockába kerül, és így tovább. Emeljük fel a harmadik fokozatra, mondjuk, 5 kilobájt szöveget. 125 000 000 000 (szó szerint: százhuszon öt milliárd művelet). Persze, ha szigorúan megközelíted, nem lesz olyan sok művelet, de négy vagy nyolcszor kevesebb lesz, de a számok sorrendje fontos.

Karakterkészlet

Ezen a ponton lehet az egyik felsorolt ​​lehetőség, például: (Vasya | Petya | Masha). Ha nem szeretné, hogy ez legyen a mintában, használja a (.)

Ne használja a szimbólumosztályt, hogy csak egyet jelölje meg (a "[] +" helyett "+" lesz). Ne írjon a pont karakterosztályába # 151; ez bármilyen karakter, akkor az osztály többi szimbóluma csak felesleges (és a negatív osztályban az összes karaktert meg lehet tagadni).

kvantor

A kvantáló meghatározhat egy adott értéket és határértéket is. Ha a megadott számok a kvantáló határai közé esnek, akkor a kifejezés töredékét úgy kell tekinteni, hogy egybeesik az elemzett karakterlánccal. szintaxis:

Ha csak meg kell adnia a szükséges minimális értéket, és nincs maximális, csak vesszõt tegyen, és ne írja a második számot: "" ("minimum 5"). A leggyakrabban használt kvantálók esetében speciális jelölések vannak:

"csillag" vagy egy szorzótábla

Kapcsolódó cikkek