Inleiding tot Gereelde uitdrukkings in PHP
Deur Bernard pê
In Linux en Unix, لأنه ليس هناك صناعة كاملة من الناس الذين من الأعمال التجارية من الحصول على عملك الأمثل لمحركات البحث – regex. ومع ذلك rye van karakters word gekoppel. Soek programme soos "grep’ groot mate afhanklik van regex. Eintlik regex vorm die kern in die Linux wêreld. Baie script tale soos Perl, Ruby, PHP…ens het bou in regex funksies sowel. Sodat jy kan sien, leer gewone uitdrukking is belangrik omdat hulle baie gebruik word op baie plekke en waarskynlik meer so in die toekoms.
Regex kan vreesaanjaend wees op die eerste, maar as jy die basiese beginsels kan kry, Dit is regtig nie te moeilik om te verstaan. In hierdie artikel, Ons gaan kyk hoe regex kom in die prentjie wanneer die skryf van PHP programme.
Om 'n vinnige opsomming doen tot dusver, 'n gewone uitdrukking is 'n reeks van letterlike karakters, wildcards, wysigers en ankers.
letterlike karakters
Letterlike karakters is letters, syfers en spesiale karakters wat ooreenstem met net hulself. Voorbeelde hiervan is abc, 123, ~ @ En so aan (sommige karakters al voorbehou).
– 'N insluiting reeks [m-N] ooreenstem met een van 'n karakter in die reeks van m tot N.
voorbeeld '[a-z]’ sal ooreenstem enige alfa karakter wat binne die 'n val tot Z reeks.
– 'N uitsluiting reeks [^ M-N] ooreenstem met een van 'n karakter nie ingesluit in die reeks van m tot N. voorbeeld '[^ 0-9]’ sal ooreenstem enige nie-syfer karakter.
– 'n tydperk “.” ooreenstem met enige karakter. Dit is ook bekend as die joker. Voorbeeld 'a.c’ sal ooreenstem 'AEC', 'ACC', "In die @’ en so aan.
– Die ontsnapping karakter ” in staat te stel interpretasie van spesiale karakters. Voorbeeld 'a.c’ sal ooreenstem 'AC’ net. Onthou dat '.’ is 'n gereserveerde karakter om 'n wildcard verteenwoordig? Daarom 'n tydperk aan te pas, dws '. ", ons nodig het om dit te ontsnap soos so.’
– die uitdrukking [:alnum:] sal pas al alfa-numeriese karakters. Dit is 'n kortpad na [A-Vir-Z0-9]. Soos jy kan sien, dit is nie regtig 'n kortpad. die uitdrukking [:alnum:] dalk makliker wees om te onthou vir 'n paar mense.
– die uitdrukking [:Alpha:] sal pas al Alpha karakters. Dit is 'n kortpad na [A-zA-Z].
– die uitdrukking [:leeg:] sal ooreenstem 'n spasie of blad.
– die uitdrukking [:syfer:] sal ooreenstem 'n numeriese syfer. Dit is 'n kortpad na [0-9].
– die uitdrukking [:laer:] sal pas al kleinletters. Dit is 'n kortpad na [a-z].
– die uitdrukking [:boonste:] sal pas al hoofletters. Dit is 'n kortpad na [A-Z].
– die uitdrukking [:punt:] sal pas al afdruk karakters, uitgesluit ruimtes en alfa numeriese karakters.
– die uitdrukking [:ruimte:] sal ooreenstem 'n spasie karakter.
wysigers
A wysiger verander die betekenis van die onmiddellik voorafgaande patroon karakter.
– 'n asterisk ('*') wedstryde 0 of meer van die voorafgaande kwartaal. Voorbeeld 'n *’ sal ooreenstem ”, 'N', 'Aa', 'Aaaaa’ en so aan (Let op die gebruik van ”. Dit beteken eenvoudig dat die uitdrukking ooreenstem met niks sowel).
– 'N vraagteken ('?') wedstryde 0 of 1 van die voorafgaande kwartaal. Voorbeeld 'n?’ sal ooreenstem ” en 'n’ net.
– A plusteken ('+') wedstryde 1 of meer van die voorafgaande kwartaal. Voorbeeld 'n +’ sal ooreenstem 'n ', 'aaaaaaa’ en so aan. Dit sal nie ooreen ”.
– {m,N} wedstryde tussen M en N voorkomste van die voorafgaande kwartaal. Voorbeeld 'n{1,3}’ sal ooreenstem 'n ', 'aa’ en 'aaa’ net.
– {N} ooreenstem met presies N voorkomste van die voorafgaande kwartaal. Voorbeeld 'n{2}’ sal ooreenstem 'aa’ net.
ankers
Ankers vestig die konteks vir die patroon soos “die begin van 'n woord” of “einde van 'n woord”.
– Die snoek '^’ is die begin van 'n lyn. Voorbeeld '^ http’ sal enige nuwe lyn wat begin met 'http' pas.
– Die dollar teken '$’ punte aan die einde van 'n lyn. Voorbeeld ná $’ sal enige lyn wat eindig met 'ná' pas. (Veranderlikes in PHP begin met $. Probeer om nie te verwar met dit).
groepering
groepering "( )’ laat wysigers om aansoek te doen om groepe van regex spesifiseerders in plaas van net die onmiddellik proceding specific. voorbeeld '( aa | bb )’ sal ooreenstem met 'aa’ of 'bb’
Genoeg van vervelige stuff, dit is tyd om dit wat in 'n goeie gebruik maak van die teorie van regex.
PHP Implementering
Daar is 2 belangrikste variante van regex, Perl-versoenbaar regex (PCRE) en POSIX-Uitgebreide. PHP bied nogal 'n baie funksies om dit te implementeer 2 tipes regex. in PHP, die mees algemeen gebruik word PCRE funksie is 'preg_match’ en in-POSIX uitgebreide regex, 'Ereg'. Beide sintaksis is effens anders, maar ewe kragtige. Die voorkeur aan 'preg_match gebruik’ of 'ereg’ is heeltemal aan individuele hoewel Stuur voorgestel dat preg_match is effens vinniger. Ek verkies om te gebruik 'eregi’ bloot as gevolg van my agtergrond in linux administrasie.
voorbeeld 1: Wat ooreenstem met die Verenigde State van Amerika 5 of 9 syfer kodes
Zip kodes in die VSA het die volgende formaat ##### of #####-#### waar # is 'n syfer. As jy wil hê dat die poskode voorgelê verifieer sê uit 'n aanlyn vorm, jy sal nodig hê om regex iewers in jou script om dit te verifieer. Die bypassende-POSIX uitgebreide regex patroon sal wees:
[[:syfer:]]{5}(-[[:syfer:]]{4})?
Verward? wag, Laat my verduidelik waarom. Dit regex is verdeel in 2 dele: [[:syfer:]]{5} en (-[[:syfer:]]{4})?.
eerste deel: '[[:syfer:]]’ beteken die syfer verskeidenheid en {5} beteken dat die syfer moet plaasvind 5 keer.
tweede deel: Die bracket '( )’ groepe die "-[[:syfer:]]{4}’ saam en die '?’ beteken die uitdrukking '(-[[:syfer:]]{4})’ kan óf voorkom 0 of 1 tyd.
Om die regex in PHP implementeer, Ons gebruik die volgende kode:
$zipCodes = 'xxxxx-xxxx ";
$patroon = '[[:syfer:]]{5}(-[[:syfer:]]{4})?';
As (ereg($patroon,$zipCodes)) {
ECHO “ooreenstem gevind “;
}
anders {
ECHO “pas nie gevind”;
}
voorbeeld 2: wat ooreenstem met die datums
Sê ons wil die datums deur die gebruiker aangegaan verifieer. As ons aanvaar slegs datums soos “JJJJ-MM-DD” of “JJJJ-M-D”, die regex patroon sal wees
[0-9]{4}(-[0-9]{1,2})+
Die "+’ agter die term (-[0-9]{1,2}) beteken dat die term ten minste een keer moet plaasvind. Let daarop dat ek ook die regex as kan herskryf:
[[:syfer:]]{4}(-[[:syfer:]]{1,2})+
of
[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}
Soos jy kan sien, Daar kan nog baie oplossings vir 'n probleem…
Afsluiting
Regex mag moeilik om te verteer op die eerste, maar die logika is eenvoudig as jy in staat is om meer te oefen is. Leer regex is net so belangrik soos leer PHP. Meer voorbeelde kan gesien word by web-developer.sitecritic.net. Sterkte.
Bernard pê is 'n groot passioner van web tegnologie en een van die mede-stigters van Sitecritic.net site resensies. Hy werk met ervare web ontwerpers en ontwikkelaars vir meer as 5 jaar, ontwikkeling en ontwerp van kommersiële en nie-kommersiële webtuistes. Gedurende sy vrye tyd, hy doen webwerf resensies, vryskut SEO en PHP werk. Besoek sy blog by Melbourne PHP
Artikel Bron: http://EzineArticles.com/?deskundige = Bernard_Peh
http://EzineArticles.com/?Inleiding-To-Daaglikse-Expressions-In-PHP&id = 222113