Komputeran, Bernameyên
PHP (regex) - çi ye? Wergerandî, û fehsa têgînên ku bi rêkûpêkî
Di dema xebatê de bi her tekstek di zimanê bernameyên modern, bipêşvebir berdewamî bi armancên çiraxî input bo daneyî, bi gorî pattern xwestin hevdîtinê, lêgerîn û şûna pariyên test û cureyên din ên operasyonên hevdîtina agahiyên ji pîta. Geş algorîtmayên mabesta xwe bi xwe rê li ber windabûna demê de, di rêde code û tevliheviya di pêşketin û nûkirinê xwe.
The bi pêşveçûna bi lezgîn ya Internet û WEB-design zimanan bi kêm mîqdara pêwîst ji bo vê kodê pêwîst çêkirina rêyên liv û kompakt ya muamelekirina text. Ev êdî ji bilî e û di nav destpêker û pêşdebiran pîşeyî yên zimanê PHP populer e. The zimanê îfade rêk wek Şablonên nivîsê asankirin ku karê îdarî ji text û kêm code ji bo bi deh û bi sedan xetên. Gelek pirsgirêk dikarin li hemû bêyî ku ew ne bê çareserkirin.
Pi asayî li PHP
zimanê PHP heye sê mekanîzmayên ji bo kar bi têgînên ku bi berdewamî - «ereg», «mb_ereg» û «preg». Ya hevbeş de ya herî bi virtual «preg», ku erkên ne gihîştina ji bo kitêbxaneyê yên PCRE piştgiriya îfade kirin, di destpêkê de ji bo zimanê Perl, ku di pakêta PHP di nav de bi pêş e. Preg-digerin fonksiyonên di hevcotî string text dayîn, li gor mestereya hin di zimanê têgînên bi rêkûpêk.
Bingehîn syntax
Ku wekî beşek ji gotara kurt de ne mumkin e ji bo danasîna di detail tevahiya syntax îfade kirin, ji bo ev e ku wêjeya taybet heye. Me bi tenê hêmanên sereke nîşan derfetên ji bo pêşvebirinê û fêm wergerandî tevgerê.
Di PHP ramanê bi rêkûpêk e, bi awayekî fermî danasîn pir bi zehmet, û ji ber vê yekê asan description. Ravekirineke taybet a string text e. Ev ji bo şablonê di veqetandina fedayî û Guherker û diyar dike ku rê ji bo çareserkirina ev pêk tê. vedixwînin li alternatîvên cihê û ji dubareyan qalibên.
Ji bo nimûne, di mîmîka / \ d {3} - \ d {2} - \ d {2} / m bazinê e "/", li pey wê jî şablonê, û sembola «m» ya guherbar e.
Hemû hêza têgînên ku bi berdewamî ev herem bi kar meta-characters. "\" - The metacharacter zimanê sereke ya konsonant e. Ev guhertinên li type of characters jêr li pêşberî (ie. E. nav an wildcard character asayî û tênegihiştina Converted). Din metacharacter girîng e, a xeta sererast «|», li template alternatîf dibêje. wergerandî More yên meta-characters:
| ^ | Destpêk object an a string |
| ( | Destpêk subpattern |
| ) | subpattern End |
| { | جانتا Start |
| } | جانتا End |
| \ d | digit dehek de ji 0 heta 9 |
| \ D | tu character e ku hejmareke ne |
| \ s | sembola vala, space, tab, |
| \ w | ferhenga sembola |
PHP, hevdîtina têgînên bi rêkûpêk, space wekî xeysetê derbasdar cuda bê nirxandin, da ku îfadeya XYZ û ABC KU cuda ne.
subpatterns
Di PHP subpatterns rêzdar ji alîyê parantezê de, û ew bi carna "subexpressions" tê gotin. Vejandina ji fonksiyonên jêr e:
alternatîfên Bandwidth. Ji bo nimûne, pattern germê (tiştekî | Bird |) li hev tê bi peyvên "germahî", "Firebird" û "germ". Û bêyî bixemilînî ew tenê wê string vala, "bird" û "germ" be.
"Spectacular" subpattern. Ev tê wê wateyê ku, eger pattern Kêmtir temenî de, wê demê hemû maçên vedigere. Ji bo neşefafiya, em vê mînakê didim. Dema ku îfade rêk jêr e: serketî distîne ((zêr | zêr plated) (medal | cup)) - û ji rêzika ji bo maçên, "bi serketî bikeve a Medalya zêr." Ji bilî pêşkêş destpêkê, search results derxistin, wê bê: "Xelata zêrîn", "madalyayan", "zêr".
Operators kelîman (kvadrifikatory)
Di komkirin û îfadeya bi rêkûpêk e gelek caran pêwîst ji bo analîzkirina dubarekirina hejmara û sembol. Ev pirsgirêk e, eger ne gelek ji dubareyan ne. Lê çi bikim, gava em hejmara wan çend xwe nas dikin? Di vê rewşê de jî, pêwîst e ji bo bikaranîna metacharacters taybet.
For a description of kelîman bikaranîn kvadrifikatory - metacharacters ji bo diyarkirina hejmara. Kvadrifikatory du cureyên in:
- hevpar di nav parantêzê de;
- kêmkirin.
جانتا Pûan destê xwe danî ser destê hejmara herî kêm û herî zêde element kelîman destûr di form of du hejmarên jî deaktîv bike, wek x {2,5}. Ger ku herî zêde hejmara kelîman ne naskirî ye, argumana duyem de ne: x {2}.
quantifiers kurtkirin ji sembolên herî hevpar ya kelîman bo nekevin syntax overloading modul me pêwîst in. Bi piranî sê kêmkirina heye:
1. * - sifir an zêdetir ji dubareyan, e ku bi qasî {0}.
2. + - yek an jî zêdetir ji dubareyan, ango, {1} ...
3.? - sifir an jî bi tenê yek dubare - {0,1}.
wergerandî regex
Ji bo kesên ku hîn têgînên bi rêkûpêk, wergerandî - the best dersan de. Em bidin çend ku derfetên wan nîşan bi a herî kêm ji hewldana. Hemû code bi temamî bi versions of 4.x PHP û li jor hevgirtî ye. Ji bo fêmkirina syntax û bikaranîna hemû taybetmendiyên zimanê pêşniyar em perrtûke J .. Friedl, "îfadeyên bi rêkûpêk", ku bi temamî syntax nirxandin, û wergerandî yên têgînên bi rêkûpêk ne tenê PHP, di heman demê de jî ji bo Python, Perl, MySQL, Java, Ruby, û C # hene.
Validation E-mail address
Task. e an rûpel Internet li ku mêvan tê xwestin email address hene. ramanê Regular divê duristîya ji navnîşanên li ber şandina mesajên kontrol bike. Check misoger nake ku posteyê xwe dişinî di rastiyê de heye û mesajên qebûl dike. Lê esrarê ji navnîşanên eşkere çewt ew dikare.
Biryar. As bi ti zimanê bernameyên, di PHP verification email-address regex dikare bi awayên cuda pêkanîn, û ji wergerandî di vê gotarê de ne, li ser hilbijartina dawî de û tenê ne. Ji ber vê yekê, di her rewşê de, em ê di lîsteya daxwazên ku divê bê hesab kirin gava ku bernamên û pêkanîna taybet girêdayî bi temamî li ser pêşvebirinê ne.
Bi vî awayî, îfadeya ku prov a email, divê şert û mercên li jêr de venêrî:
- Hebûna di destpêkê karibî @ sembola de, û tu deman de hene.
- Di beşa domain ji navnîşana @ sembola, dihewîne tenê characters derbasdar bo navên domain. Heman tişt ji bo navê bikarhêner.
- Dema bikarbîne navê bikarhêner ji bo destnîşankirina hebûna characters taybetî pêwist e wek an apostrophe an line vertical. Van sembolan potansiyel bi xeter in û dikarin werin li van cure êrîşên ku SQL-derziyê de. Dûr navnîşanên.
- bikarhêneran destûrê tenê yek, ku ew dikarin bibin karektera yekemîn an dawî di string ne.
- The domain name, divê herî kêm du û ne bêtir ji şeş tîpan de dihewîne.
Mînak, hesabê hemû van şert û mercên dikarin di hejmara van dîtiye.
Validation ya URL
Task. Kontrol bike bê ka string text vekî derbasdar e URL address. Careke din, em xwe not bikin ku îfadeyên bi rêkûpêk URL-vekim dikare bi awayên cuda asteng.
Biryar. Versiyon ji bo dawî me wiha ye:
/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /? $ /
Niha pêkhatên xwe li Faktayên zêdetir bikaranîna odên analîz bike.
| îdîaya 1 | Berî ku URL divê tu characters ne xwedî |
| îdîaya 2 | Check bi amadebûna prefix wêneke «http» |
| Em babete 3 | divê tu sembol li wir be |
| îdîaya 4 | Eger li wê derê «s», xalên URL ji bo girêdana bin temînatê, «https» |
| îdîaya 5 | para pêwîst yên "//" |
| îdîaya 6 | No characters |
| p. 7-9 | Rastkirina li domain asta yekem û li ber xala |
| p.10-13 | Rastkirina qada nivîsandina di asta duyem de û xala |
| p.14-17 | URL Avasaziya pelê - komek ji hejmarên, nameyên, xêzikên, li zinaran, zanyarîyan de, û bi teknîka di dawiya |
Kontrol bike numreyên kartên krediyê
Task. Tu divê ji bo pêkanîna mabesta ket hejmara karta kredîyê ya sîstemên peredana herî. A variant bi tenê ji bo kartên Visa û MasterCard.
Biryar. Dema afirandina ramanê we re pêwîst bigire ber çavan, bi amadebûna gengaz ên merc li odeya input de. The malikên li ser nexşeyê bi nav komên ji bo xwendin û di kasetekê de hêsantir parvekirin. Ji ber vê yekê, ev xwezayî ye ku mirov dikarin hewl bidin ku bikevin hejmareke bi vî awayî (ie. E. Bikaranîna qadên).
Hewe a ramanê gerdûnî ku digre berçavan qadên gengaz cîwan, zêdetir tevlîhev e ku bi tenê ji bilî malikên piştguh hemû characters. Ji ber vê yekê, em pêşniyar di bikaranîna ramanê wildcard / D, ku hemû characters ji bilî malikên.
Niha hûn dikarin rasterast ji bo hejmara check here. Hemû şîrketên, issuers karta kredîyê bi kar tînin a format hejmara bêhempa ye. Di mînaka jî tê bikaranîn, û bi muwekîlê re ne lazim e ku derbasî bi navê şîrketa - ku bi hejmara destnîşankirin. kartên Visa her tim bi xwe de hejmar 4 dest û xwedî length ji 13 an 16 reqem. MasterCard di cûrbecûr yên 51-55 bi hejmara dirêj 16. Di encama çalakiyê de dest pê dike, em îfadeya li jêr bikin:
Berî hevdîtina bi fermana dikare zêdetir dawî reqem ji hejmara e, ku li ser Rêbaza Luhn hesabkirin ceribandin.
Rastkirina phone number
Task. Dinêre me yên ku hejmara telefonê ketin.
Biryar. Hejmara malikên di hejmara telefona navder û mobile guhirîn, li gor welat, da gerdûnî seh têgînên bi rêkûpêk, hejmara telefonê kardike ne gengaze. Lê hejmara navnetewî xwedî a format hişk û bêkêmahî ji bo deynkirin qalibê. Hê bêtir, da ku ew bêtir û bêtir operatorên telefonê netewî hewl didin ku pêşiya standard heman. avahiya odeyê de wiha ye:
+ CCC.NNNNNNNNNNxEEEE, ku:
- C - Koda dewletê ku ji 1-3 reqeman e.
- N - Hejmara heta 14 reqem.
- E - extension azade.
Plus an element zor pęwîst e, û nîşana X ya niha, bi tenê dema dirêjkirina pêwîst e.
Di encama vê çalakiyê em xwedî wê ramanê jêr e:
^ \ + [0-9] {1,3 } \ [0-9] {4,14}. (:?. X +)? $
Hejmarên di range
Task. Ev ji bo misogerkirina hijmar tesaduf yên cûrbecûr hin pêwîst e. Li gel vê, pêwist e ji bo dîtina rêyeke ramanî bi rêkûpêk tenê reqemên ji range.
Biryar. Li vir çend têgînên ku ji bo hin ji bûyerên herî normal in:
| Diyar saetê de ji 1 ji 24 | ^ (1 [0-2] | [1-9]) $ |
| Day di meha 1-31 | ^ (3 [01] | [12] [0-9] | [1-9]) $ |
| Seconds an minutes 0-59 | ^ [1-5]? [0-9] $ |
| A Hejmara ji 1 heta 100 | * (100 |? [1-9] [0-9]) $ |
| Day of sala 1-366 | ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $ |
Search IP-Adresan
Task. Ev kirin, ka gelo a string dayîn a derbasdar IP-adresa di formata IPv4 di range ji 000.000.000.000-255.255.255.255 e pêwîst e.
Biryar. As bi ti pirsgirêk di zimanê PHP, îfadeya birêkûpêk gelek varintov. Ji bo nimûne, ev:
kontrol bike ji têgînên
Check regex kardike ji bo arşîvkirin dikare zehmet be ku ji ber tevliheviya syntax, ku ji "rêk" zimanên bernameyên cihê ye. Ji bo çareserkirina vê pirsgirêkê, gelek têgînên ku protestovanan bike ku ew bi hêsanî kontrol duristîya ya şablonê hûn li text rast afirandin hene. The bernameçêker re dikevê, ew ramanê û rastandin, welat û di cih de di encama processing bibînin. Pirê caran pêşkêşî beşa reference, ku details aliyê îfadeyên bi rêkûpêk, wergerandî û cudahiyên pêkanîna bo zimanên dirêj herî hene.
Lê belê ji bo xizmetên bike bi temamî baweriya results for all bipêşvebir ku bi kar tînin PHP tê pêşniyarkirin ne. A îfade bi rêkûpêk hatiye nivîsîn û lêkolîn li kesê, bilinkirina bekelorya û misoger nebûna de çewtî.
Similar articles
Trending Now