Php regulāras izteiksmes tagiem. PHP regulārās izteiksmes. Regulāras izteiksmes piemērs attēlu iegūšanai no html koda

PHP, kā jau modernai programmēšanas valodai pienākas, piedāvā izstrādātājam funkciju kopumu regulāro izteiksmju lietošanai. Varat meklēt virknes sastopamības citās virknēs, izmantojot sarežģītus kritērijus.

  • PREG_PATTERN_ORDER;
  • PREG_SET_ORDER.

Kārtot pēc 1. iespējas, meklēšanas rezultāti tiek grupēti pēc regulārās izteiksmes numura (noklusējuma). Otrajā gadījumā rezultāti tiek grupēti pēc to atrašanās vietas rindā.

Simbols - veidnes elements

Ir svarīgi atcerēties, ka veidne darbojas ar simboliem. Programmēšana jau sen ir aizmirsusi, kas ir "rakstzīmju" datu tips. Mūsdienu valodas nav zemākas par "virknes" jēdzienu, bet attiecībā uz modeli jums ir jāsaprot: šeit tiek manipulēti ar simboliem.

Veidnes izveidošana, pirmkārt, ir vajadzīgās rakstzīmju secības noteikšana. Ja jūs to skaidri saprotat, tad veidnē nebūs kļūdu. Jebkurā gadījumā tas būs daudz mazāk.

  • a ir konkrēts veidnes elements – simbols.
  • a-z ir veidnes elements, arī viena rakstzīme, bet tikai ar vērtību no a līdz z - viss latīņu valodā ar mazajiem burtiem.
  • 0-9 ir viens skaitlis, jebkurš skaitlis, bet 1-3 ir tikai 1, 2 vai 3.

Liela nozīme ir gadījumam modelī. Pirmā un pēdējā rakstzīmes ir nozīmīgas. Varat norādīt, kur veidne sākas un beidzas.

Funkciju veidne

PHP preg match all izmanto standarta regulārās izteiksmes sintaksi. norāda vienu no tajos norādītajiem simboliem:

  • tikai rakstzīmes a, b, c.
  • [^ABC] viss, izņemot rakstzīmes A, B, C.
  • \w un \W — teksta vai bezteksta rakstzīme.
  • \s un \S — atstarpes vai bezatstarpes rakstzīme.
  • \d un \D — cipars vai bezcipara.

Atkārtotās rakstzīmes ir apzīmētas ar krokainajām figūriekavām — (n,m) un attiecas uz iepriekšējo rakstzīmi.

  • n apzīmē "ne mazāk kā" atkārtošanos;
  • m - atkārtojums "ne vairāk".

Sintakse nodrošina daudzas veidņu izveides iespējas, taču vislabāk ir sākt ar pamatiem, tas ir, ar vienkāršām veidnēm, kas rakstītas ar savu roku un kurās nav sarežģītu elementu un kombināciju.

Vienkārši sakot, uzskaitot īstās nepieciešamās rakstzīmes, norādot to nepieciešamo daudzumu un ņemot vērā, ka “^” rakstzīme atbilst rindas sākumam, bet “$” – rindas beigām, var izveidot vienkāršas veidnes. Analizējot reālas, labi atkļūdotas regulārās izteiksmes no kvalificētiem ekspertiem, varat iegūt pamatīgas zināšanas, lai izveidotu sarežģītas preg match all lietojumprogrammas. PHP arsenāls neaprobežojas tikai ar šīm divām funkcijām, bet tās ir visizplatītākās.

Vienkārša prakse

Veselu skaitļu raksts:

  • "/*/"

Arī veselu skaitļu raksts, bet priekšā var būt zīme ("+", "-"), un var būt papildu atstarpes priekšā/aiz:

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

Tāpat:

  • /^[\s|\+|\-](0,1)*(\.)*/ - skaitlis ar punktu.
  • /+@+\.(2,3)/ - iespēja e-pasta atpazīšanai.

Izmantojot savas veidnes preg match all, to piemērus internetā, vietņu lapu kodu un citu avotu analīze ļauj izveidot savu veidņu bibliotēku.

Informācijas atrašanai ir daudz iespēju. Konkrēti, pēdējās divas iepriekš minētās konstrukcijas var modelēt atšķirīgi. Daudzos gadījumos priekšroka tiks dota veidnei, kas nodrošina vēlamo atbilstību ātrāk un precīzāk. Preg match all izmantošana PHP, kā arī līdzīgas funkcijas citās valodās prasa praksi, uzmanību un iepriekšēju veidņu pareizības pārbaudi.

int preg_match_all (virknes raksts, virknes priekšmets, masīvs &atbilst [, int karodziņi [, int nobīde]])

Virknes priekšmetā meklē visas raksta modeļa atbilstības un ievieto rezultātu atbilstības masīvā secībā, ko nosaka karogu kombinācija.

Pēc pirmās atbilstības atrašanas turpmākie meklējumi tiks veikti nevis no virknes sākuma, bet gan no pēdējā atrastā gadījuma beigām.

Papildu karogu parametrs var apvienot šādas vērtības (ņemiet vērā, ka PREG_PATTERN_ORDER izmantošana vienlaikus ar PREG_SET_ORDER ir bezjēdzīga):

PREG_PATTERN_ORDER

Ja šis karodziņš ir iestatīts, rezultāts tiks sakārtots šādi: elements $matches satur modeļa pilnīgu gadījumu masīvu, elements $matches satur pirmā apakšparauga gadījumu masīvu un tā tālāk.

Atgriež atrastā modeļa gadījumu skaitu (var būt nulle) vai FALSE, ja izpildes laikā radās kļūda.


2. piemērs. Mantkārīga HTML tagu saskaņošana

Šī piemēra izvade būs šāda:

Ja funkcijas izpildes laikā tiek atrasta modeļa atbilstība, tiks atgriezta modificētā priekšmeta vērtība, pretējā gadījumā tiks atgriezta sākotnējā tēma.

Pirmie trīs preg_replace() parametri var būt viendimensijas masīvi. Gadījumā, ja masīvs izmanto atslēgas, apstrādājot masīvu, tās tiks ņemtas tādā secībā, kādā tās atrodas masīvā. Atslēgu norādīšana masīvā modelim un nomaiņai nav obligāta. Ja tomēr nolemjat izmantot indeksus, lai saskaņotu aizstāšanā iesaistītos modeļus un virknes, izmantojiet funkciju ksort() katrā masīvā.

Lācis melnais lēni pārlēca pāri slinkajam sunim.

Izmantojot ksort(), mēs iegūstam vēlamo rezultātu:

Lēnais melnais lācis pārlēca slinkajam suni.

Ja priekšmeta parametrs ir masīvs, katram tā elementam tiek veikta modeļa meklēšana un aizstāšana. Atgrieztais rezultāts būs arī masīvs.

Ja modeļa un aizstāšanas parametri ir masīvi, preg_replace() pārmaiņus izgūst elementu pāri no abiem masīviem un izmanto tos meklēšanas un aizstāšanas darbībai. Ja aizstāšanas masīvā ir vairāk elementu nekā raksts, trūkstošo elementu aizstāšanai tiks izmantotas tukšas virknes. Ja raksts ir masīvs un aizstāšana ir virkne, katrs modeļa masīva elements tiks meklēts un aizstāts ar modeli (visi masīva elementi pēc kārtas būs paraugs, bet aizstāšanas virkne paliek fiksēta). Opcijai, kad raksts ir virkne un aizstāšana ir masīvs, nav jēgas.

Modifikators /e maina funkcijas preg_replace() uzvedību tā, ka aizstāšanas parametrs pēc nepieciešamo aizstāšanas veikšanas tiek interpretēts kā PHP kods un tikai pēc tam tiek izmantots aizstāšanai. Lietojot šo modifikatoru, esiet piesardzīgs: aizstāšanas parametram ir jābūt derīgam PHP kodam, pretējā gadījumā rindā, kurā ir funkcijas preg_replace() izsaukums, radīsies sintakses kļūda.

Koda paraugs: aizstājiet ar vairākiem modeļiem

Šis piemērs izvadīs:

$startDate = "27.05.1999.";

Koda piemērs: izmantojot modifikatoru /e Piemēra kods: pārvērš visus HTML tagus par lielajiem burtiem preg_replace_callback

preg_replace_callback funkcija — veic regulārās izteiksmes meklēšanu un aizstāšanu, izmantojot atzvanīšanas funkciju

Sintakse

jaukts preg_replace_callback (jaukts modelis, atzvanīšanas atzvanīšana, jaukts temats [, iekšējais ierobežojums])

Šīs funkcijas darbība daudzējādā ziņā ir līdzīga preg_replace(), izņemot to, ka aizstāšanas parametra vietā ir jānorāda atzvanīšanas funkcija, kurai kā ievades parametrs tiek nodots atrasto gadījumu masīvs. Paredzamais rezultāts ir virkne, kas tiks aizstāta.

Koda piemērs