Cik liela un daudzveidīga ir informācijas pasaule,tikpat ātri tas paplašinās un attīstās. Jebkurš lēmums ir tikai mirklis kopējā kustības procesā. Zināšanas un pieredze dod iespēju izprast mērķa sasniegšanas procesu, bet tas nekad nav rezultāts tā sasniegšanai. Ir apšaubāmi, vai pārskatāmā nākotnē ir iespējams runāt par rezultātu kopumā, taču ir ļoti svarīgi, lai tā tiekšanās atspoguļotu būtisku un objektīvi nepieciešamo procesu.
“Vēlme un / vai liela nauda” neradaalgoritms, kas spējīgs to, ko cilvēks dara dabiski un “par brīvu”, it īpaši, ja viņš nedomā par to, ko dara. Katrā informācijas problēmas pozīcijā ir vismaz viens balts plankums, bet aiz tā parasti uzreiz ir redzami citi tīri plankumi, un nemaz nav nepieciešams, lai tie visi būtu balti.
Interneta tehnoloģija ir ievērojami vienkāršojusi piekļuviinformācijai, bet jautājums - kā uzspiest vēlamo - nav vienkāršots, bet ieguvis jaunus darba “apjomus”. Un, lai gan PHP regulārie izteicieni acīmredzami neizmanto plaisu, tie ir nozīmīgs solis uz priekšu.
Vienkāršas funkcijas + algoritms = veidne
Piedāvājot regulāras izteiksmes, PHP būtībā irsamazina algoritma saturu, taču parastās atrastās / aizstātās funkcijas un atrastie algoritmi nezaudēja savu vērtību. Jaunas idejas neliecina par informācijas revolūciju. Maksimālais skaits, uz kuru varat paļauties, ir kompaktais kods un attīstītāja spējas pareizi formulēt meklēšanas vaicājumu pieaugums.
Jums vajadzētu zināt un lietot regulāru phpizteicieni. Piemēri ir pārliecinoši un efektīvi. Bet jums jāzina, ka līdz ar jaunā meklēšanas mehānisma parādīšanos smaguma centrs ir pārcēlies uz veidni - sava veida mehānismu, lai gan patiesībā tas aizstāj daudzas vienkāršas meklēšanas funkcijas, nosacījumus, cilpas un citus operatorus.
Ir:
- labs ir kvalitatīvs un mūsdienīgs rīks;
- ir svarīgi redzēt un izmantot kolēģu pieredzi;
- Realitātes un virtuālo ideju apvienošana ir veiksmes garantija.
Zināšanu iegūšana par to, kā izprast problēmu, lai to atrisinātu, bieži ir svarīgāka nekā konkrēts rezultāts.
Tiek pārstāvētas PHP regulārās izteiksmesvairākas valodas sintakses funkcijas un daudzi noderīgi piemēri internetā. Sakarā ar valodas sintakse specifiku, lietojumprogrammas ierobežo tikai izstrādātāja iztēle, tomēr jāpatur prātā, ka ne visas veidnes darbosies. Izmantojot PHP, būtiska ir regulāru izteiksmju pārbaude.
Vienkārša rakstzīmes (virknes) meklēšana
Raksturis ne vienmēr ir viens baits, un bieži vien tas irkā elementārs signāls papildus satur precīzu nozīmi. Kodējums dažādos veidos definē kodā redzamās rakstzīmes. Simbolam var būt vairākas iespējas: "$" = "USD" = "cu", ... - tā ir precīza nozīme, ka kaut kur kaut kas, bet ne vienmēr tuvumā, ir saistīts ar valūtu. Tomēr precīza nozīme var būt mainīgajā PHP, kas vienmēr sākas ar simbolu “$”, bet nevar sākties ar “USD” un “cu”.
Programmās simbols var būt funkcijas nosaukums(virkne) kontekstā: atpazīt un izpildīt - tas ir no dinamiskas uz objektu orientētas programmēšanas lauka, kad PHP konstrukcijas, funkcijas, regulārās izteiksmes tiek izmantotas tieši lēmumu pieņemšanā. Atrastais simbols tiek “izpildīts”, tas ir, pats par sevi nosaka, kas jādara vietā, kur tas tiek atrasts, un tādā veidā, kā viņš “uzskata to par nepieciešamu”.
Vienkāršas rakstzīmes / virknes meklēšana nav tik vienkāršanodarbošanās, un jo vairāk informācijas simbolā, jo labāk. Jums ne vienmēr ir jāatrod desmit labākās pārtikas cenas, jāizvēlas gardas dzimšanas dienas kūku receptes vai jāizlemj par piekārto griestu darbuzņēmēju.
Bieži vien ir jāoptimizē vienkārši algoritmiar ne tikai vienkāršu informācijas aritmētiku vai sarežģītos apstākļos, kad no datu bāzes jāizvēlas vēlamais simbols, un virkne, kurā tas jāatrod, ir simtiem vietņu. Tajā pašā laikā simbola izvēles cena ir vienāda ar laiku, kas nepieciešams paraugu ņemšanai no datu bāzes, un cena, kur meklēt, ir laiks, lai meklētu bēdīgi slavenos simtiem vietņu.
Vientuļais simbols nav frāze vai vairākas frāzes, tas var būt jebkur un būt tik mazs, cik vēlaties. Kā noteikt, kas tieši tiek atrasts, ir tas, ko meklējat?
Piemērs: cenas atrašana
Nepietiek tikai ar simbola "$" atrašanu tekstā.Pārbaudīt, vai priekšā ir skaitlis, arī ne vienmēr ir pietiekami. Punkta vai skaitļa norādīšana pirms simbola "$" nodrošina, ka cenas ar valūtas simboliem priekšā netiks ņemtas vērā. Tiks izlaistas arī cenas, kurās valūtas vispār nav, bet lapā par to skaidri norādīts.
Parasti problēmas risināšana parastajā veidā palielinās algoritmu līdz nepazīšanai un prasīs daudz laika. Tikmēr, izmantojot regulāru izteiksmi, PHP numuru atradīs bez problēmām.
$ cContents = preg_match_all ("/ [0-9] + ([$] | usd | cu | jūs) {1} / i";
"meklēt e-pastu - 2usd; <br/>";
"atrast e-pastu - 2u.e.; <br/>";
"darba e-pasts - уе2; <br/>";
"pārbaudīt e-pastu - $ 13", $ aResult);
... ";". implode (",", $ aResult [0]). "<br/>".
Sniegs atbildi: "2; 2usd, 2у.e.", Bet rindā neko neatradīs: "pārbaudīt e-pastu - 13 USD".
Ja veidnē ir norādīts simbols priekšā vai aizmugurē, lielākajā daļā gadījumu jūs varat ātri sasniegt mērķi.
$ cContents = preg_match_all ("/ ([0-9] + ([$] | usd | cu | jūs) {1}) | (([$] | usd | cu | jūs) {1} [0-9] +) / i ";
"meklēt e-pastu - 2usd; <br/>";
"atrast e-pastu - 2u.e.; <br/>";
"darba e-pasts - уе2; <br/>";
"pārbaudīt e-pastu - $ 13", $ aResult);
... ";". implode (",", $ aResult [0]). "<br/>".
Rezultāts: "4; 2usd, 2u.u., ye2, 13 USD".
Par neparedzētu loģiku
PHP piedāvā regulāras izteiksmes tāpat kā citasrīkus, taču nav nepieciešams tos izmantot saskaņā ar tā noteikumiem vai sintaksē izmantot citas iekļautās funkcijas.
Pirms meklēšanas sākšanas jūs varat pārvērst vēlamomasīvs un vieta, kur tiks veikta meklēšana, sadalīta komponentos atbilstoši sākotnējam kritērijam. Vienkāršs eksplodēt () un implode () funkciju pāris bieži padara risinājumu vieglāku un ātrāku.
Piemēram, iepriekšēja darba rezultātāRajonam ir izveidots rindu (datu) masīvs par to, cik kartupeļu ir novācis katrs ciemats: ir norādīts NameDevice un novāktais daudzums, un, ja ciematā darbojas vairāki uzņēmumi, tad NameDevelopment.NameEnterprise un value through "; " un tā tālāk visos uzņēmumos. Šajā gadījumā nebūs iespējams aprēķināt kopējo iekasēto summu, bet, ja jūs veicat impode (";", $ aResult), būs viena gara rinda, kurā pāri - NameVillage / NameVillage.NameEnterprise - savāktā summa - būs jāuzskaita ar ";". Pēc tam, kad saņemtais ir izdarījis pretējo, eksplodēt (";", $ aResult) ir masīvs visiem, kas savāca un cik daudz viņš savāca, pēc tam, noņemot no rindām visas ne-digitālās rakstzīmes, mums ir tikai skaitļi, kuru summa būs kopējā savāktā summa.
Šajā piemērā regulāras izteiksmes PHPļauj nemeklēt nevajadzīgas lietas vispār, tās vienkārši un viegli iegūst nepieciešamās digitālās vērtības. Ātri un efektīvi neatkarīgi no tā, cik ilgi ir ciematu un uzņēmumu nosaukumi. Šis risinājums nav ideāls, taču tas parāda, ka jums ne vienmēr ir jāievēro noteikumi. Bieži vien jūs varat sasniegt vēlamo neparastā veidā.
Abstrakcija no tehniskās puses, no kodēšanas
Algoritma sintakse nepasaka, kā tas notiekizskatās tiešām. Bet, nodrošinot to pašu lapas, skripta un virkņu kodējumu (kas tiek meklēts un kurā notiek meklēšana), jūs varat ienirt problēmā ārpus tās tehniskās puses.
Jums jāzina ne tikai tas, ko meklēt, bet arī tas, kur tas atrodas.darīt, kad, kādā daudzumā, ko mainīt un kā. Formāli PHP regulārās izteiksmes tiek realizētas kā pilnīgs, pilnībā funkcionējošs mehānisms, tomēr daudzu iemeslu dēļ tā partneru ieviešana dažādās valodās atšķiras. Parasti pirms vienas vai citas veidnes pārsūtīšanas uz vienu vai otru instrumentālo vidi konkrētas problēmas risināšanai ir nepieciešams veikt kvalitatīvu adaptāciju, pārbaudīt visus iespējamos sākotnējo datu variantus.
Pat ja jūs izmantojat savu pieredziPHP izstrāde, regulāras izteiksmes, piemēri, veidnes un konstrukcijas prasa rūpīgu pārbaudi. Valodas funkcionalitāte, tās sintakse un izpildes vide dinamiski mainās.
Veidņu struktūra un saturs
Tas, kas iepriekš tika rakstīts kā kombinācijameklēšanas funkcijas, nosacītie operatori, aizstāšanas, ievietošanas, dzēšanas darbības ir ietvertas vienā rakstzīmju rindā saskaņā ar noteiktiem noteikumiem - regulāras izteiksmes modeli. Patiesībā ievērojama summa tiek kodēta stingri noteiktā veidā un izpildīta saskaņā ar īpašiem noteikumiem.
Nevar arī atkļūdot nevienuvalodas operators, tāpēc jūs nevarat atkļūdot regulārās izteiksmes modeli, šo procesu var tikai atdarināt. Parasti tiek pieņemts variants: tas darbojas - tas nedarbojas. Sintakse ir ļoti vienkārša, lai gan tās uztvere, it īpaši darba sākumā, ir ļoti sarežģīta.
Vienkāršas izteiksmes piemērs
Vienkāršā versijā modelis atbilst līnijai:
$ cContents = preg_match ("/ asdf / i", "asdf", $ aResult). ";". implode (",", $ aResult).
Rezultāts būs "1; asdf", jo funkcijapabeidz darbu pie sastādītā modeļa pirmās spēles. Rezultāts ir tāds pats, ja meklējat virknē "aaaasdf" un virknē "zzzasdfvvv". Ja norādīsit pirmo un / vai pēdējo rakstzīmi, kopsumma būs nepārprotama:
$ cContents = preg_match ("/ ^ asdf / i", "asdf", $ aResult). ";". implode (",", $ aResult). "<br/>";
$ cContents. = preg_match ("/ asdf $ /", "asdf", $ aResult). ";". implode (",", $ aResult). "<br/>".
Rezultāts būs: 1; asdf1; asdf.
Rakstzīmes "^" un "$" norāda, ar ko sāktmodeli un kā tas beidzas. Funkcijas preg_match rezultāts ir atbilstību skaits, ja tiek konstatēta kļūda, tā var būt 0, 1 vai nepatiesa. Trešais parametrs - masīvs - satur vienīgo atrasto elementu. Funkcijas preg_match_all () izmantošanas gadījumā meklēšana turpinās līdz rindas beigām.
$ cContents = preg_match ("/ asdf / i", "asdf123asdf456asdf789", $ aResult). ";". implode (",", $ aResult). "<br/>";
$ cContents. = preg_match_all ("/ asdf / i", "asdf123asdf456asdf789", $ aResult). ";". implode (",", $ aResult [0]). "<br/>".
Rezultāts:
viens; asdf
3; asdf, asdf, asdf.
Ja jūs neizmantojat īpašas instrukcijas, tadkatra rakstzīme nosaka sevi un savu vietu neatkarīgi no virkņu kodēšanas un veidņu kodēšanas. Programmētājam jārūpējas par to, lai šo elementu kodējumi būtu pareizi attiecībā pret otru un lapas kodējums.
PHP funkcijas darbam ar regulārām izteiksmēm
PHP regulārās izteiksmes irrakstzīmju virknes, kas rakstītas noteiktā veidā. Parasti pēc analoģijas ar citām programmēšanas valodām tās tiek rakstītas ar simboliem "/" ... "/" un ievietotas pēdiņās, atkarībā no algoritma, jūs varat izmantot vienu un divkāršu.
Galvenās funkcijas php preg spēles ir regulārasizteiksme tiek izmantota kā parauga atbilstība un apstājas, kad tā tiek pirmo reizi atrasta, tās versija ar _all sufiksu meklē visas atbilstības un atgriež to masīvu. Funkcija preg aizstāt aizstāj katru atrasto parauga atbilstību, tā var darboties ar masīviem, ļaujot noformēt meklējumus un aizstāt vairākas opcijas.
Interesantas iespējas darbam ar parastoizteiksmes var izstrādāt, izmantojot funkciju preg_replace_callback, kurai nepieciešams nevis aizstājējs teksts, bet gan funkcijas nosaukums, kas veiks nomaiņu. Papildus praktiskajai vērtībai šeit varat ieviest veidņu pārbaudes mehānismus, kuriem ir būtiska loma pēdējo izstrādē un atkļūdošanā.
Regulāro izteicienu darbības joma
Tā kā hiperteksta valodas irformalizēta informācija, lielākā mērā tie ir izejmateriāli. Ir izstrādāts liels skaits veidņu un konstrukciju, lai efektīvi apstrādātu lielu informācijas daudzumu. Lielu daļu šī darba veic mehānismi, kas iebūvēti dažādās vietņu pārvaldības sistēmās (CMS).
Nav pārsteidzoši, ka daudzas CMS ir kļuvušas par standartiem.De facto būvlaukumiem, un attīstības uzņēmumi tos uztur (atjaunina), nav nepieciešams izstrādāt veidnes iekšēji. Tomēr ārpus šādām sistēmām ir ļoti noderīga pieredze ar regulārām izteiksmēm.
Regulāras izteiksmes un reāla informācija
Svarīga regulāro izteicienu piemērošanas jomaPHP veido PHPOffice bibliotēku parādīšanās. Darbs ar dokumentiem un izklājlapām vienmēr ir bijis un tam ir liela nozīme, un OOXML standarts ļāva ne tikai parsēt reālos dokumentus, bet arī tos ģenerēt programmatiski.
Pateicoties hiperteksta valodu un PHP attīstībaiKonkrēti, ir parādījusies reāla iespēja automatizēt "standarta veidlapas" dokumentu "ražošanu", piemēram, rēķinus, pārskatus, biznesa plānus un citus informācijas objektus, kuru struktūru un saturu patiešām var formalizēt un automatizēt. .
Saistībā ar OOXML izmantošanu aprakstīšanaiRegulāro izteiksmju izstrādes process būtiski atšķiras no tradicionālā darba ar HTML un CSS iezīmēšanas valodām. Īstam dokumentam, papildus marķējumam un pašam saturam, ir daudz detaļu. Piemēram, dokumentam, ko automātiski ģenerē programma, būs stingrs un precīzs saturs. Personas veidotam vai viņa apstrādātam dokumentam būs saturs, kas uzgleznots uz daudziem tagiem. Jebkurš darbs ar dokumentu noved pie tā, ka tā semantika var palikt nemainīga, bet krāsota iekšpusē pēc atšķirīga dažādu konstrukciju skaita.
Dabiskā informācija un situācija
Cilvēks vienmēr ir ieinteresēts problēmas risināšanā,kuras iestatījums ir informācija, un kā rezultātā tiks sniegta arī informācija. Uzrādot problēmas izklāstu dokumenta formā, persona saņem noteiktu semantiku, kas, veicot speciālistu skaidrojumu (veicot izmaiņas, precizējot formulējumu, dzēšot, rediģējot), noved pie ne tikai daudzām viena dokumenta versijām, bet arī tā versijām ar atšķirīgu saturu.
Jo īpaši problēma, ko rada frāze "Atrisinietkvadrātveida risinājums ", pēc rediģēšanas tas neizskatīsies šādi:" Atrisiniet kvadrātvienādojumu. "Ja vispirms tika izlabota pirmā kļūda un pēc tam otrā, tad dabiskā informācija OOXML stilā var izskatīties šādi:" [Atrisināt] [ ] [kvadrāts] [e] [] [urrā] [iekš] [nenie] ", taču tas nepavisam nav garantija, ka šādi uzdevums izskatīsies OOXML tagos (kvadrātiekavas iekavās atdarina tagu iekavas).
Informācijas apkopošanu var viegli izdarīt pēc tamkatrs uzdevuma rediģēšanas process, bet katru reizi šī procedūra tiks veikta pēc atšķirīga algoritma. Regulāras izteiksmes kā sava veida rīks informācijas uzdevumu formalizēšanai faktiski ir kļuvušas par ceļu no formālām hiperteksta struktūrām uz dabisko informāciju.