Regularni izrazi (PHP). PHP: regularni izrazi, primjeri

Koliko je velik i raznolik svijet informacija, onoliko brzo koliko se širi i razvija. Svaka odluka je samo trenutak u općem procesu kretanja. Znanje i iskustvo pružaju mogućnost razumijevanja procesa postizanja cilja, ali nikada - a ne rezultat njegovog postizanja. Nesporno je da u skoroj budućnosti uopće možemo govoriti o ishodu, ali je vrlo važno da proces težnje za njim predstavlja bitan i objektivno potreban proces. "Želja i /ili veliki novac" ne stvaraju algoritam koji je sposoban za nešto prirodno i "slobodno" od osobe, pogotovo kada ne razmišlja o tome što točno radi. U svakom položaju informacijskog zadatka postoji barem jedna bijela mrlja, ali nakon nje, obično, odmah se vide druga čista mjesta, a nije potrebno da su sve bijeli cvjetovi.


Internetska tehnologija uvelike je pojednostavila pristup informacijama, ali pitanje - kako nametnuti željenom poželjnom - nije pojednostavljeno, već stečeno novim "količinama rada". Iako PHP prostori regularnih izraza očito nisu iscrpljeni, oni su značajan korak naprijed.

Jednostavne funkcije + algoritam = predložak

Nudeći regularne izraze, PHP bitno smanjuje sadržaj algoritma, ali uobičajene funkcije pretraživanja i zamjene i algoritmi pronađene obrade nisu izgubili svoj značaj. Nove ideje ne signaliziraju informacijsku revoluciju. Maksimum na koji se može računati je kompaktan kod i rast sposobnosti programera da ispravno formulira upit za pretraživanje.
Trebalo bi znati iprimijeniti regularne izraze u PHP-u. Uvjerljivi primjeri i djelotvorni. Ali treba shvatiti da je s dolaskom novog mehanizma pretraživanja centar gravitacije preselio u predložak - neku vrstu mehanizma, iako u biti zamjenjuje skup jednostavnih funkcija pretraživanja, uvjeta, ciklusa i drugih operatora.


Majka:
  • Kvalitetno i moderno oruđe je dobro;
  • Važno je vidjeti i koristiti iskustvo koledža;
  • kombiniranje stvarne stvarnosti i virtualnih ideja jamstvo je uspjeha.
  • Postizanje znanja, kao što je bilo potrebno razumjeti zadatak, riješiti ga, često ima više značenja nego konkretan rezultat. Redovne fraze u PHP-u predstavljaju više funkcija u sintaksi jezika i mnogo korisnih primjera na Internetu. S obzirom na specifičnosti sintakse jezika, mogućnosti korištenja ograničene su samo maštom razvojnog inženjera, ali treba imati na umu da neće raditi svi predlošci. Pomoću PHP provjere regularnih izraza je bitno.

    Jednostavno pretraživanje znakova (redaka)

    Znak nije uvijek jedan bajt, a često simbol, kao elementarni signal, ima dodatno značenje. Kodiranje definira vidljive znakove u kodu na različite načine. Simbol može imati nekoliko opcija: "$" = "USD" = ".e." - to je točno značenje da je nešto drugo, ali ne nužno blizu, povezano s valutom. Međutim, točno značenje može biti u varijabli PHP, koja uvijek počinje simbolom "$", ali ne može početi s "USD" i "in.".
    U programima, znak može biti ime funkcije (niza) u kontekstu: prepoznati i izvršiti - to je iz dinamičke domeneobjektno-orijentiranog programiranja kao dizajn, funkcija, PHP regularnim izrazima koji se koriste neposredno za donošenje odluka. Pronađeno karakter „radi” da sama određuje što treba učiniti na mjestu gdje je pronađen, a način na koji je „smatra se” stane.
    Pronađite znakova /line - nimalo lak zaposlenje i više informacija znak, to bolje. To nije uvijek potrebno naći deset najboljih cijena hrane, izaberite ukusni recepti torte ili odrediti izvođač šarkama strop.
    Često jednostavne algoritme za optimizaciju informacija nije jednostavna aritmetička ili u teškim uvjetima, kada se željeni znak za odabir iz baze podataka, a linija koja bi trebala biti pronađena - na stotine stranica. Cijena izbora je uzorke simbol vrijeme iz baze podataka, a cijena gdje gledati - vrijeme traži zloglasni stotine web stranica. Lone simbol - to ne fraza nekoliko fraza, to može biti bilo gdje i bilo proizvoljno malen. Kako bi se utvrdilo što je poželjno je pronađena?

    Primjer: Traži cijenama

    Samo pronašao tekst simbol „$” - mali. Provjerite je pred njim lik nije uvijek dovoljno. Ako se očekuje točka ili broj prije simbol „$” je garancija da su cijene po kojima novac simboli su ispred neće se razmatrati. Cijene će biti nedostaje, što nije navedeno valutu, ali na stranici to pokazuje.
    U principu, rješenje problema, kao i obično nabubre izvan algoritam za prepoznavanje i uzetipuno vremena. U međuvremenu, pomoću regularnog izraza, broj PHP-a neće pronaći nikakav problem. $ cContents = preg_match_all ("/[0-9] + ([$] | usd | ue | ue) {1} /i"; pogledajte e-mail - 2usd; "; -mail - 2. ";
    " radna e-pošta - ye2; ";
    " provjera e-pošte - $ 13 "; $ aResult;);
    . „; ”. implode (',', $ aResult ). ''. Odgovorit će: "2; 2usd, 2u.e.", ali neće pronaći ništa u retku: "provjerite e-poštu - $ 13". Predvidivši u predlošku prisutnost simbola ispred ili iza, u velikoj većini slučajeva možete brzo postići cilj. $ cContents = preg_match_all ("/([0-9] + ([$] | usd | ue | ue) {1}) | (([$] | usd | ue | ue) {1 } [0-9] +) /i ";
    " pogledaj e-mail - 2usd; ";
    " pronađi e-mail - 2ou. ";
    " radna e-pošta - ue2; ";
    " provjera e-pošte - $ 13 "; $ aResult;);
    . „; ”. implode (',', $ aResult ). ''.
    Rezultat: "4; 2usd, 2u.e., ue2 $ 13".

    Bez obzira na logiku

    Redovni izrazi PHP nudi, kao i drugi alati, ali nije ih potrebno primjenjivati ​​u skladu s njegovim pravilima ili koristiti druge funkcije stringa u predviđenoj sintaksi. Prije početka pretraživanja, pretvorite željeni u polje, a mjesto gdje će se izvršiti pretraživanje, podijelite na komponente prema prethodnom kriteriju. Jednostavan par funkcija eksplodira () i implode () često pojednostavljuje i ubrzava rješenje.
    Na primjer, kao rezultat prethodnog rada, formirano je niz redova (podataka) u području na kojem je prikupljeno svako krumpir: ime sela i prikupljeni volumen je naznačeno, a ako postoji nekoliko poduzeća u selu, onda redak polja ide NameDome.Name i vrijednost kroz ";" i tako dalje na svim poslovima. Izračunajte ukupan iznos prikupljen u ovom slučaju neće biti moguć, ali ako napravite impode (";", $ aResult), bit će jedan dugi redak u kojem paru -Naziv domene /ime Ime.Ime - Prikupljeni volumen - bit će prikazan kroz ";". Nakon što napravite obrnuti snimak, eksplodirajte (";", $ aResult) - niz svih koji su prikupili i koliko je prikupio, a zatim, uklanjajući sve ne-znamenke iz redaka, imamo samo znamenke čiji će zbroj biti ukupni volumen prikupljenih. U ovom primjeru, regularni izrazi u PHP-u omogućuju vam da uopće ne izgledate ekstra, oni jednostavno i pristupačno izvlače potrebne numeričke vrijednosti. Brzo i učinkovito, bez obzira na to koliko su dugo imena sela i poduzeća bila. Ovo rješenje nije idealno, ali pokazuje da nije uvijek nužno slijediti pravila. Često možete postići željeni neobičan način.

    Sažeto iz tehničke strane, od kodiranja

    Sintaksa algoritma ne govori kako izgleda. No, pružajući isto kodiranje stranice, skripte i nizova (koje se pretražuju i u kojem se vrši pretraživanje), možete uroniti u zadatke izvan njegove tehničke strane.
    Ne trebamo samo znati što tražiti, nego i gdje to učiniti, kada, u kojoj količini, što promijeniti i kako. Formalno regularni izrazi PHP-a izvršavaju se kao potpuni vlastiti mehanizam, ali iz mnogih razloga implementacija njegovih analoga na različitim jezicima je različita. Kao opće pravilo, prije premještanja određenog predloška u jedan ili drugi alat za rješavanje određenog zadatka, potrebno je napraviti kvalitativnu prilagodbu, izvršiti provjeru svih mogućih varijanti izlaznih podataka.
    Čak i ako koristite vlastito razvojno iskustvo u PHP-u, redovitoIzrazi, primjeri, obrasci i nacrti zahtijevaju pomnu kontrolu. Funkcionalni jezik, sintaksa i izvršna okolina dinamički se mijenjaju.

    Struktura i sadržaj predloška

    Ono što je prethodno napisano u obliku kombinacije funkcija pretraživanja, uvjetnih operatora, zamjene, umetanja, brisanja, sastoji se od jednog retka znakova s ​​određenim pravilima - obrascem regularnog izraza. Zapravo, značajan iznos je kodiran na strogo definiran način i izvršava se prema specifičnim pravilima. Baš kao što ne možete napraviti ispravljanje pogrešaka bilo kojeg jezičnog operatora, ne možete napraviti ispravljanje pogrešaka u obrascu regularnog izraza, taj se proces može samo emulirati. Opće pravilo je varijanta: radi - ne radi. Sintaksa je vrlo jednostavna, iako je njezina percepcija, osobito na početku rada, vrlo teška.

    Primjer jednostavnog izraza

    U jednostavnoj varijanti, predložak se podudara s retkom: $ cContents = preg_match ("/asdf /i", "asdf", $ aResult). „; ”. implode (',', $ aResult). Rezultat će biti "1; asdf", budući da funkcija završava svoj rad na prvom podudaranju uzorka. Rezultat će biti isti ako pogledate u redak "aaaasdf" iu retku "zzzasdfvvv". Ako navedete prvi i /ili zadnji znak, rezultat će biti jednoznačan: $ cContents = preg_match ("/^ asdf /i", "asdf", $ aResult). „; ”. implode (',', $ aResult). '';
    $ cContents. = Preg_match ("/asdf $ /", "asdf", $ aResult). „; ”. implode (',', $ aResult). ''. Rezultat će biti: 1; asdf1; asdf. Simboli "^" i "$" označavaju koji predložak počinje i završava. Rezultat funkcije preg_match je broj podudaranja, ako je otkrivena pogreška, može biti 0 1 ili false. U trećem parametru, polje, nalazi se jedan pronađeni element. U ovom slučajupomoću funkcije preg_match_all () pretraživanje se nastavlja do kraja linije. $ cContents = preg_match ("/asdf /i", "asdf123asdf456asdf789", $ aResult). „; ”. implode (',', $ aResult). '';
    $ cContents. = Preg_match_all ("/asdf /i", "asdf123asdf456asdf789", $ aResult). „; ”. implode (',', $ aResult ). ''. Rezultat: 1; asdf
    3; asdf, asdf, asdf. Ako ne koristite posebne upute, svaki znak definira sebe i svoje mjesto, bez obzira na kodiranje linije i kodiranje predloška. Programer mora osigurati da je kodiranje tih elemenata ispravno u odnosu jedan na drugi i kodiranje stranice.

    PHP funkcije za regularne izraze

    Regularni izrazi u PHP-u su niz znakova napisanih na određeni način. Tipično, po analogiji s drugim programskim jezicima, oni se pišu znakovima "/" "/" i stavljaju se u navodnike, ovisno o algoritmu, možete koristiti jednostruki i dvostruki. Glavna funkcija php preg matcha koristi regularne izraze kao slučajnost predloška i zaustavlja se kada prvi put ostane, a njegova varijanta sa sufiksom _all traži sve podudarnosti i izdaje niz takvih. Preg funkcija zamjene zamjenjuje svaki pronađeni uzorak podudaranja, može obraditi nizove, omogućujući vam da dizajnirate pretraživanje i izvršite zamjenu za mnoge opcije. Zanimljive opcije za rad s regularnim izrazima mogu se razviti korištenjem funkcije preg_replace_callback, koja ne prihvaća tekst koji treba zamijeniti, te ime funkcije koja će izvršiti zamjenu. Osim praktične vrijednosti, moguće je implementirati mehanizme za provjeru predložaka, koji igraju značajnu ulogu u razvoju i postavljanju tih predložaka.

    Opseg regularnih izraza

    OdHipertekstualni jezici predstavljaju formalizirane informacije, u većoj mjeri oni su izvorni materijal. Razvijen je velik broj predložaka i dizajna kako bi se učinkovito nosili s velikim količinama informacija. Veći dio toga rada obavljaju mehanizmi ugrađeni u različite sustave upravljanja gradilištem (CMS). Nije iznenađujuće da su mnogi CMS-ovi postali de facto standardi za gradilišta, a budući da ih programeri sponzoriraju (ažuriraju), oni ne moraju sami razvijati predloške. Međutim, izvan takvih sustava, iskustvo s regularnim izrazima je vrlo korisno.

    Regularni izrazi i realne informacije

    Važno područje uporabe regularnih izraza u PHP-u je pojava PHPOffice knjižnica. Rad s dokumentima i proračunskim tablicama je uvijek malen i važan, a standard OOXML dopušta ne samo rastavljati stvarne dokumente, nego ih i programski oblikovati. Zahvaljujući razvoju markup jezika i PHP-a, posebice, postojala je stvarna mogućnost automatizacije "proizvodnje" dokumenata standardnih obrazaca, kao što su naplata, izvješća, poslovni planovi i drugi informacijski objekti, čija je struktura i sadržaj zapravo predmet formalizacije i automatizacije. , Zbog korištenja procesa opisa jezika OOXML, razvoj regularnih izraza ima značajnu razliku u odnosu na tradicionalni rad s HTML i CSS markup jezicima. Pravi dokument, osim oznake i osim stvarnog sadržaja, ima mnogo detalja. Primjerice, dokument koji program automatski kreira bit ćeimaju strogo i precizno značenje. Dokument koji oblikuje osoba, bez obzira je li obrađen ili ne, sadržavat će sadržaj, obojen u skup oznaka. Bilo koji rad s dokumentom dovodi do činjenice da njegova semantika može ostati jedna, ali je obojena unutar različitih brojeva različitih dizajna.

    Prirodne informacije i situacija

    Osoba je uvijek zainteresirana za rješavanje problema, čija je formulacija informacija, i kao rezultat toga, također će se pružiti informacije. Predstavljajući formulaciju zadatka u obliku dokumenta, osoba prima određenu semantiku, koja tijekom usavršavanja od strane stručnjaka (unošenje promjena, razjašnjavanje teksta, brisanje, uređivanje) dovodi ne samo do različitih opcija jednog dokumenta, nego i do njegovih verzija s različitim sadržajem. Konkretno, zadatak koji predstavlja izraz "riješiti kvadratnu opstrukciju", nakon uređivanja neće izgledati ovako: "Riješite kvadratnu jednadžbu." Ako je prva pogreška prvi ispravljena, a zatim druga, tada prirodne informacije u OOXML stilu mogu izgledati ovako: "[Resolve] [] [square] [e] [] [hurray] [in] [name]", ali to uopće nije Jamstvo da će to točno izgledati u OOXML oznakama (uglaste zagrade emuliraju zagrade oznaka). Lako je skupiti informacije nakon svakog procesa uređivanja zadatka, ali svaki put se ova procedura izvršava pod različitim algoritmima. Regularni izrazi, kao vrsta alata za formaliziranje informacijskih zadataka, postali su, u biti, put od formalnih hipertekstualnih struktura do prirodnih informacija.

    Povezane publikacije