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

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

Koliko je velik i raznolik svijet informacija,jednako brzo se širi i razvija. Svaka odluka je samo trenutak u općem procesu kretanja. Znanje i iskustvo omogućuju razumijevanje procesa postizanja cilja, ali nikada rezultat njegovog postizanja. Sumnjivo je da se u dogledno vrijeme općenito može govoriti o rezultatu, ali je vrlo važno da je proces težnje za njim bitan i objektivno nužan proces.

“Želja i/ili veliki novac” ne stvaraalgoritam sposoban za ono što čovjek radi prirodno i “besplatno”, pogotovo kada ne razmišlja o tome što točno radi. U bilo kojoj poziciji informacijskog zadatka postoji barem jedna bijela mrlja, ali iza nje, obično odmah, vidljive su ostale čiste mrlje, a uopće nije nužno da su sve bijele.

PHP regularni izrazi

Internetske tehnologije uvelike su pojednostavile pristupinformaciji, ali pitanje - kako se nametnuti na postojeće željeno - nije pojednostavljeno, već je dobilo nove "volume" rada. I iako u PHP-u regularni izrazi očito ne iscrpljuju prostor, oni su značajan korak naprijed.

Jednostavne funkcije + algoritam = uzorak

Nudeći regularne izraze, PHP je u bitismanjuje sadržaj algoritma, ali uobičajene funkcije pretraživanja / zamjene i algoritmi za obradu pronađenog nisu izgubili svoje značenje. Nove ideje ne najavljuju informacijsku revoluciju. Maksimalno na što možete računati je kompaktan kod i povećanje sposobnosti programera da ispravno formulira upit za pretraživanje.

Primjeri PHP regularnih izraza

Trebali biste poznavati i primjenjivati ​​uobičajeni PHPizrazi. Primjeri su uvjerljivi i učinkoviti. Ali morate biti svjesni da se s pojavom novog mehanizma za pretraživanje, težište pomaknulo na predložak - svojevrsni mehanizam, iako zapravo zamjenjuje mnoge jednostavne funkcije pretraživanja, uvjete, petlje i druge operatore.

Regularni izraz php broj

Imati:

  • kvalitetan i moderan instrument je dobar;
  • važno je vidjeti i koristiti iskustvo kolega;
  • kombiniranje stvarnosti i virtualnih ideja jamstvo je uspjeha.

Postizanje znanja, kako je bilo potrebno razumjeti problem da bi ga se riješio, često je važnije od konkretnog rezultata.

Prikazani su regularni izrazi u PHP-unekoliko funkcija u sintaksi jezika i mnogo korisnih primjera na Internetu. Zbog specifičnosti sintakse jezika, mogućnosti korištenja ograničene su samo maštom programera, međutim, treba imati na umu da svi predlošci neće raditi. Uz PHP, provjera regularnog izraza je neophodna.

Jednostavno pretraživanje znakova (niza).

Znak nije uvijek jedan bajt, a često i znak,kao elementarni signal, dodatno nosi točno značenje. Kodiranje drugačije definira vidljive znakove u kodu. Simbol može imati nekoliko varijanti: "$" = "USD" = "cu", ... - to je točno značenje da je negdje, nešto, ali ne nužno u blizini, povezano s valutom. Međutim, točno značenje može biti u PHP varijabli, koja uvijek počinje znakom "$", ali ne može početi sa "USD" i "cu".

Regularni izrazi u php

U programima simbol može biti naziv funkcije(string) u kontekstu: prepoznati i izvršiti - ovo je iz područja dinamičkog objektno orijentiranog programiranja, kada se PHP konstrukcije, funkcije, regularni izrazi koriste izravno za donošenje odluka. Pronađeni simbol se "izvršava", odnosno sam određuje što treba učiniti na mjestu na kojem se nalazi, a kako on "sam smatra" potrebnim.

Traženje jednostavnog znaka/niza nije tako jednostavnozanimanje, a što više informacija u simbolu, to bolje. Ne morate uvijek pronaći top deset cijena hrane, odabrati ukusne recepte za rođendanske torte ili se odlučiti za izvođača radova na spuštenim stropovima.

Provjera valjanosti PHP regularnog izraza

Jednostavne algoritme često je potrebno optimiziratiuz nejednostavnu informacijsku aritmetiku ili u teškim uvjetima, kada iz baze treba odabrati željeni simbol, a niz u kojem ga treba pronaći nalazi se na stotinama stranica. Pritom je cijena odabira simbola jednaka vremenu potrebnom za uzorkovanje iz baze, a cijena mjesta traženja jednaka je vremenu pretraživanja za zloglasne stotine stranica.

Usamljeni simbol nije fraza ili nekoliko fraza, on može biti bilo gdje i mali koliko god želite. Kako odrediti što je točno pronađeno ono što tražite?

Primjer: pronalaženje cijene

Samo pronalaženje simbola "$" u tekstu nije dovoljno.Provjera da se ispred njega nalazi broj također nije uvijek dovoljna. Ako uključite točku ili broj prije simbola "$", to je jamstvo da cijene sa simbolima novca ispred neće biti uzete u obzir. Također će se preskočiti cijene u kojima uopće nema valute, ali je na stranici izričito naznačeno.

PHP funkcije regularnog izraza

Općenito, rješavanje problema na uobičajeni način će napuhati algoritam do neprepoznatljivosti i oduzet će puno vremena. U međuvremenu, koristeći regularni izraz, PHP će pronaći broj bez problema.

$ cContents = preg_match_all ("/ [0-9] + ([$] | usd | cu | ye) {1} / i";

"pogledaj e-mail - 2usd; <br/>";
"pronađi e-poštu - 2u.e .; <br/>";
"radna e-pošta - ue2; <br/>";
"provjera e-pošte - $ 13", $ aResult);
... ";". implode (",", $ aResult [0]). "<br/>".

Dat će odgovor: "2; 2usd, 2u.e.", ali neće pronaći ništa u retku: "provjeri e-poštu - 13 dolara".

Omogućujuć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 | cu | ye) {1}) | (([$] | usd | cu | ye) {1 } [0-9] +) / i ";
"pogledaj e-mail - 2usd; <br/>";
"pronađi e-poštu - 2u.e .; <br/>";
"radna e-pošta - ue2; <br/>";
"provjera e-pošte - $ 13", $ aResult);
... ";". implode (",", $ aResult [0]). "<br/>".

Rezultat: "4; 2 USD, 2u.u., ye2, 13 USD".

O nenamjernoj logici

PHP nudi regularne izraze poput ostalihalate, ali ih nije potrebno primjenjivati ​​prema njegovim pravilima ili koristiti druge inline funkcije na sintaktički način.

Prije početka pretraživanja, možete pretvoriti željeno uniz, a mjesto na kojem će se izvršiti pretraga, podijeljeno na komponente prema preliminarnom kriteriju. Jednostavan par funkcija explode () i implode () često čini rješenje lakšim i bržim.

Regularni izrazi u php

Na primjer, kao rezultat preliminarnog radaFormiran je niz linija (podataka) za okrug o tome koliko je krumpira ubralo svako selo: Naznačeni su NazivDevice i ubrana količina, a ako u selu posluje nekoliko poduzeća, onda NazivRazvoj.NazivEnterprise i vrijednost kroz "; " i tako dalje za sva poduzeća. U ovom slučaju neće biti moguće izračunati ukupni prikupljeni iznos, ali ako napravite impode (";", $ aResult), bit će jedan dugačak red u kojem će parovi - NameVillage / NameVillage.NameEnterprise - prikupljeni iznos - biti naveden s ";". Učinivši suprotno od primljenog, explode (";", $ aResult) je niz svih koji su prikupili i koliko je skupio, a zatim, nakon što smo uklonili sve nedigitalne znakove iz redaka, imamo samo brojeve, čiji će zbroj biti ukupan iznos prikupljen.

U ovom primjeru, regularni izrazi u PHP-udopuštaju da se uopće ne traže nepotrebne stvari, jednostavno i lako izvlače potrebne digitalne vrijednosti. Brzo i učinkovito, bez obzira koliko su duga imena sela i poduzeća. Ovo rješenje nije idealno, ali pokazuje da se ne morate uvijek pridržavati pravila. Često možete postići ono što želite na neobičan način.

Apstrahiranje s tehničke strane, od kodiranja

Sintaksa algoritma ne govori kako jeizgleda stvarno. No, nakon što ste osigurali isto kodiranje stranice, skripte i nizova (koje se pretražuje i u kojem se traži), možete zaroniti u problem izvan njegove tehničke strane.

PHP preg odgovara regularnim izrazima

Ne morate samo znati što tražiti, već i gdje se to nalazi.učiniti, kada, u kojoj količini, što promijeniti i kako. Formalno, PHP regularni izrazi implementirani su kao potpuni, potpuno funkcionalni mehanizam za sebe, međutim, iz mnogo razloga, implementacija njegovih kolega na različitim jezicima se razlikuje. U pravilu, prije prijenosa jednog ili drugog predloška u jedno ili drugo instrumentalno okruženje za rješavanje određenog problema, potrebno je izvršiti kvalitetnu prilagodbu, provjeriti sve moguće varijante početnih podataka.

Php regex razmak

Čak i ako koristite vlastito iskustvoPHP razvoj, regularni izrazi, primjeri, predlošci i konstrukcije zahtijevaju pomno ispitivanje. Funkcionalnost jezika, njegova sintaksa i okruženje za izvršavanje dinamički se mijenjaju.

Struktura i sadržaj predloška

Ono što je prije napisano kao kombinacijafunkcije pretraživanja, uvjetni operatori, operacije zamjene, umetanja, brisanja, sadržan je u jednom retku znakova prema određenim pravilima - obrazac regularnog izraza. Zapravo, značajan iznos je kodiran na strogo definiran način i izvršava se prema određenim pravilima.

Također je nemoguće otkloniti bilo kojioperator jezika, tako da ne možete debugirati obrazac regularnog izraza, ovaj se proces može samo emulirati. Općenito je pravilo prihvaćena opcija: radi - ne radi. Sintaksa je vrlo jednostavna, iako je njezina percepcija, osobito na početku rada, vrlo teška.

Primjer jednostavnog izraza

U jednostavnoj verziji, uzorak odgovara liniji:

$ cContents = preg_match ("/ asdf / i", "asdf", $ aResult). ";". implode (",", $ aResult).

Rezultat će biti "1; asdf" jer funkcijazavršava svoj rad na prvom podudaranju uzorka na koji naiđe. Rezultat je isti ako tražite u nizu "aaaasdf" i u nizu "zzzasdfvvv". Ako navedete prvi i/ili posljednji znak, ukupni će biti nedvosmislen:

$ cContents = preg_match ("/ ^ asdf / i", "asdf", $ aResult). ";". implode (",", $ aResult). "<br/>";
$ cContents. = preg_match ("/ asdf $ /", "asdf", $ aResult). ";". implode (",", $ aResult). "<br/>".

Rezultat će biti: 1; asdf1; asdf.

Znakovi "^" i "$" označavaju odakle početiuzorak i kako završava. Rezultat funkcije preg_match je broj podudaranja, može biti 0, 1 ili lažno ako se otkrije pogreška. Treći parametar - niz - sadrži jedini pronađeni element. Ako se koristi funkcija preg_match_all (), pretraživanje se nastavlja do kraja retka.

$ cContents = preg_match ("/ asdf / i", "asdf123asdf456asdf789", $ aResult). ";". implode (",", $ aResult). "<br/>";
$ cContents. = preg_match_all ("/ asdf / i", "asdf123asdf456asdf789", $ aResult). ";". implode (",", $ aResult [0]). "<br/>".

Proizlaziti:

1; asdf
3; asdf, asdf, asdf.

Ako ne koristite posebne upute, ondasvaki znak definira sebe i svoje mjesto, bez obzira na kodiranje niza i kodiranje predloška. Programer mora voditi računa o tome da su kodiranja ovih elemenata ispravna u odnosu jedan na drugi i kodiranje stranice.

PHP funkcije za rad s regularnim izrazima

PHP regularni izrazi suznakovni nizovi napisani na specifičan način. Obično su, po analogiji s drugim programskim jezicima, napisani simbolima "/" ... "/" i stavljeni u navodnike, ovisno o algoritmu, možete koristiti jednostruke i dvostruke.

Glavna funkcija php preg match regularizraz se koristi kao podudaranje uzorka i zaustavlja se kada se prvi put pronađe, njegova verzija sa sufiksom _all traži sva podudaranja i vraća niz njih. Funkcija zamjene preg zamjenjuje svako podudaranje uzorka koji pronađe, može raditi s nizovima, omogućujući vam da dizajnirate pretraživanja i zamijenite više opcija.

Zanimljive opcije za rad s redovitimizrazi se mogu razviti pomoću funkcije preg_replace_callback, koja ne prihvaća zamjenski tekst, već naziv funkcije koja će izvršiti zamjenu. Osim njegove praktične vrijednosti, ovdje možete implementirati mehanizme za provjeru predložaka, što igra bitnu ulogu u razvoju i otklanjanju pogrešaka potonjih.

Opseg regularnih izraza

Budući da su jezici hipertekstaformalizirane informacije, u većoj mjeri su izvorni materijal. Razvijen je veliki broj predložaka i konstrukcija za učinkovitu obradu velikih količina informacija. Velik dio ovog posla obavljaju mehanizmi ugrađeni u različite sustave za upravljanje stranicama (CMS).

Nije iznenađujuće da su mnogi CMS postali standardi.de facto za gradilišta i budući da ih održavaju (ažuriraju) razvojne tvrtke, ne zahtijevaju izradu predložaka unutar tvrtke. Međutim, izvan takvih sustava, vrlo je korisno imati iskustva s regularnim izrazima.

Regularni izrazi i stvarne informacije

Važno područje upotrebe za regularne izraze uPHP je oblikovan pojavom PHPOffice biblioteka. Rad s dokumentima i proračunskim tablicama oduvijek je bio i jest važan, a OOXML standard je omogućio ne samo raščlanjivanje stvarnih dokumenata, već i njihovo programsko generiranje.

Zahvaljujući razvoju jezika hiperteksta i PHP-a uKonkretno, pojavila se prava prilika za automatizaciju "proizvodnje" dokumenata "standardnog obrasca", na primjer, faktura, izvješća, poslovnih planova i drugih informacijskih objekata čija je struktura i sadržaj stvarno podložni formalizaciji i automatizaciji. .

U vezi s korištenjem OOXML-a za opisivanjeProces razvoja regularnih izraza bitno se razlikuje od tradicionalnog rada s HTML i CSS označnim jezicima prije svega. Pravi dokument, osim oznake i samog sadržaja, ima mnogo detalja. Na primjer, dokument koji automatski generira program imat će strog i točan sadržaj. Dokument koji je formirala osoba ili obradio on će imati sadržaj, oslikan na mnogim oznakama. Svaki rad s dokumentom dovodi do činjenice da njegova semantika može ostati ista, ali iznutra oslikana prema različitom broju različitih konstrukcija.

Prirodne informacije i situacija

Osoba je uvijek zainteresirana za rješavanje problema,postavka o kojoj postoje informacije i, kao rezultat, također će se dati informacije. Predstavljanjem iskaza problema u obliku dokumenta, osoba dobiva određenu semantiku, koja tijekom pojašnjenja od strane stručnjaka (izmjena, pojašnjavanje formulacije, brisanje, uređivanje) dovodi ne samo do više verzija jednog dokumenta, ali i na njegove inačice s različitim sadržajem.

Konkretno, problem koji predstavlja fraza "Riješikvadratno rješenje", nakon uređivanja neće izgledati ovako: "Riješi kvadratnu jednadžbu. " [] [hura] [u] [nenie] ", ali to uopće nije jamstvo da će zadatak izgledati upravo tako u OOXML oznakama (uglate zagrade oponašaju zagrade oznaka).

Sastavljanje informacija može se lako obaviti nakon togasvaki proces uređivanja zadatka, ali svaki put će se ovaj postupak izvesti prema drugom algoritmu. Regularni izrazi, kao svojevrsni alati za formaliziranje informacijskih zadataka, postali su, zapravo, put od formalnih hipertekstnih struktura do prirodnih informacija.