Php regular na expression para sa mga tag. Mga regular na expression ng PHP. Halimbawa ng isang regular na expression para sa pagkuha ng mga imahe mula sa html code

Ang PHP, bilang angkop sa isang modernong programming language, ay nag-aalok sa developer ng isang hanay ng mga function para sa paggamit ng mga regular na expression. Maaari kang maghanap ng mga paglitaw ng mga string sa iba pang mga string gamit ang mga kumplikadong pamantayan.

  • PREG_PATTERN_ORDER;
  • PREG_SET_ORDER.

Pagbukud-bukurin ayon sa Opsyon 1 pinapangkat ang mga resulta ng paghahanap ayon sa regular na expression number (ang default). Sa pangalawang kaso, ang mga resulta ay pinagsama ayon sa kanilang lokasyon sa row.

Simbolo - elemento ng template

Mahalagang tandaan na ang template ay gumagana sa mga simbolo. Matagal nang nakalimutan ng programming kung ano ang "character" na uri ng data. Ang mga modernong wika ay hindi bumababa sa konsepto ng isang "string", ngunit tungkol sa pattern, kailangan mong maunawaan: ang mga simbolo ay manipulahin dito.

Ang pagbuo ng isang template, una sa lahat, ay tumutukoy sa kinakailangang pagkakasunod-sunod ng mga character. Kung malinaw mong naiintindihan ito, walang magiging mga error sa template. Sa anumang kaso, ito ay magiging mas kaunti.

  • a ay isang partikular na elemento ng template - isang simbolo.
  • Ang a-z ay isang elemento ng template, isa ring character, ngunit may value lang mula a hanggang z - lahat ng Latin sa lowercase.
  • Ang 0-9 ay isang numero, anumang numero, ngunit ang 1-3 ay 1, 2 o 3 lamang.

Ang kaso sa pattern ay mahalaga. Ang una at huling mga character ng pattern ay makabuluhan. Maaari mong tukuyin kung saan magsisimula at magtatapos ang template.

Template ng function

Ang PHP preg match ay gumagamit ng karaniwang regular na expression syntax. ipahiwatig ang isa sa mga simbolo na ipinahiwatig sa kanila:

  • mga karakter lamang a, b, c.
  • [^ABC] lahat maliban sa mga character A, B, C.
  • \w at \W - text o non-text na character.
  • \s at \S - whitespace o non-whitespace na character.
  • \d at \D - digit o hindi digit.

Ang mga umuulit na character ay ipinahiwatig ng mga kulot na brace - (n,m) at sumangguni sa nakaraang karakter.

  • n nagsasaad ng pag-uulit ng "hindi bababa sa";
  • m - pag-uulit ng "wala na".

Ang syntax ay nagbibigay ng maraming mga pagpipilian para sa paglikha ng mga template, ngunit ito ay pinakamahusay na magsimula sa mga pangunahing kaalaman, iyon ay, sa mga simpleng nakasulat sa iyong sariling kamay, kung saan ang mga kumplikadong elemento at kumbinasyon ay wala.

Sa madaling salita, sa pamamagitan ng paglilista ng mga tunay na character na kailangan, na nagpapahiwatig ng kanilang mga kinakailangang dami, at isinasaalang-alang na ang karakter na "^" ay tumutugma sa simula, at "$" sa dulo ng linya, maaari kang lumikha ng mga simpleng template. Sa pamamagitan ng pagsusuri sa mga tunay, mahusay na na-debug na mga regular na expression mula sa mga kwalipikadong eksperto, maaari kang makakuha ng matatag na kaalaman upang lumikha ng mga kumplikadong aplikasyon ng preg match all. Ang arsenal ng PHP ay hindi limitado sa dalawang function na ito, ngunit sila ang pinakakaraniwang ginagamit.

Simple Practice

pattern ng integer:

  • "/*/"

Gayundin isang integer pattern, ngunit maaaring mayroong isang sign sa harap ("+", "-"), at maaaring may mga karagdagang puwang sa harap/likod:

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

Gayundin:

  • /^[\s|\+|\-](0,1)*(\.)*/ - isang numerong may tuldok.
  • /+@+\.(2,3)/ - opsyon para sa pagkilala sa e-mail.

Gamit ang iyong sariling mga template para sa preg match lahat, mga halimbawa ng mga ito sa Internet, ang pagsusuri sa code ng mga pahina ng website at iba pang mga mapagkukunan ay nagpapahintulot sa iyo na lumikha ng iyong sariling library ng mga template.

Mayroong maraming mga pagpipilian para sa paghahanap ng impormasyon. Sa partikular, ang huling dalawang konstruksyon na ibinigay sa itaas ay maaaring mai-modelo sa ibang paraan. Sa maraming pagkakataon, ibibigay ang kagustuhan sa template na nagbibigay ng gustong tugma nang mas mabilis at mas tumpak. Ang paggamit ng preg match sa lahat sa PHP, pati na rin ang mga katulad na function sa ibang mga wika, ay nangangailangan ng pagsasanay, atensyon, at paunang pagsusuri sa kawastuhan ng mga template.

int preg_match_all (string pattern, string subject, array &matches [, int flags [, int offset]])

Hinahanap ang paksa ng string para sa lahat ng mga tugma ng pattern pattern at inilalagay ang resulta sa array ng mga tugma sa pagkakasunud-sunod na tinutukoy ng kumbinasyon ng mga flag.

Pagkatapos mahanap ang unang tugma, ang mga kasunod na paghahanap ay isasagawa hindi mula sa simula ng string, ngunit mula sa dulo ng huling nahanap na pangyayari.

Maaaring pagsamahin ng opsyonal na parameter ng flags ang mga sumusunod na value (tandaan na walang saysay ang paggamit ng PREG_PATTERN_ORDER kasabay ng PREG_SET_ORDER):

PREG_PATTERN_ORDER

Kung nakatakda ang flag na ito, ang resulta ay iuutos bilang sumusunod: ang elemento ng $matches ay naglalaman ng hanay ng mga kumpletong paglitaw ng pattern, ang elemento ng $matches ay naglalaman ng hanay ng mga paglitaw ng unang subpattern, at iba pa.

Ibinabalik ang bilang ng mga paglitaw ng pattern na natagpuan (maaaring zero) o FALSE kung may anumang mga error na naganap sa panahon ng pagpapatupad.


Halimbawa 2: Matakaw na pagtutugma ng mga HTML tag

Ang output ng halimbawang ito ay:

Kung ang isang pattern na tugma ay natagpuan sa panahon ng pagpapatupad ng function, ang binagong halaga ng paksa ay ibabalik, kung hindi ang orihinal na paksa ay ibabalik.

Ang unang tatlong parameter ng preg_replace() ay maaaring mga one-dimensional na array. Kung sakaling ang array ay gumagamit ng mga susi, kapag pinoproseso ang array ay kukunin sila sa pagkakasunud-sunod kung saan sila matatagpuan sa array. Ang pagtukoy sa mga key sa array para sa pattern at pagpapalit ay opsyonal. Kung magpasya kang gumamit ng mga index upang tumugma sa mga pattern at string na kasangkot sa pagpapalit, gamitin ang ksort() function sa bawat isa sa mga array.

Ang oso na itim na mabagal ay tumalon sa ibabaw ng tamad na aso.

Gamit ang ksort() makuha namin ang nais na resulta:

Tumalon ang mabagal na itim na oso sa ibabaw ng tamad na aso.

Kung ang parameter ng paksa ay isang array, ang paghahanap ng pattern at pagpapalit ay isinasagawa para sa bawat isa sa mga elemento nito. Ang ibinalik na resulta ay magiging array din.

Kung ang mga pattern at kapalit na mga parameter ay mga array, ang preg_replace() ay halili na kumukuha ng isang pares ng mga elemento mula sa parehong array at ginagamit ang mga ito para sa paghahanap at pagpapalit na operasyon. Kung ang kapalit na array ay naglalaman ng higit pang mga elemento kaysa sa pattern, ang mga walang laman na string ay kukunin upang palitan ang mga nawawalang elemento. Kung ang pattern ay isang array at ang kapalit ay isang string, ang bawat elemento ng pattern array ay hahanapin at papalitan ng pattern (lahat ng mga elemento ng array ay magiging pattern, habang ang kapalit na string ay nananatiling maayos). Ang opsyon kapag ang pattern ay isang string at ang kapalit ay isang array ay hindi makatuwiran.

Binabago ng /e modifier ang pag-uugali ng preg_replace() function sa paraang ang kapalit na parameter, pagkatapos isagawa ang mga kinakailangang pagpapalit, ay binibigyang-kahulugan bilang PHP code at pagkatapos ay gagamitin lamang para sa pagpapalit. Kapag ginagamit ang modifier na ito, mag-ingat: ang kapalit na parameter ay dapat maglaman ng wastong PHP code, kung hindi, magkakaroon ng syntax error sa linyang naglalaman ng tawag sa preg_replace() function.

Sample code: Palitan ng maraming pattern

Ang halimbawang ito ay maglalabas ng:

$startDate = "5/27/1999";

Halimbawang code: Gamit ang /e modifier Halimbawa ng code: Kino-convert ang lahat ng HTML tag sa uppercase na preg_replace_callback

preg_replace_callback function - Nagsasagawa ng regular na expression na paghahanap at pagpapalit gamit ang isang callback function

Syntax

mixed preg_replace_callback (mixed pattern, callback callback, mixed subject [, int limit])

Ang pag-uugali ng function na ito sa maraming paraan ay katulad ng preg_replace(), maliban na sa halip na ang kapalit na parameter, dapat kang tumukoy ng callback function, na nagpapasa ng hanay ng mga nahanap na pangyayari bilang input parameter. Ang inaasahang resulta ay ang string na papalitan.

Halimbawang code