Ordinadors, Programació
PHP (expressions regulars) - què és? Exemples i comprovació de les expressions regulars
Quan es treballa amb text en qualsevol llenguatge de programació modern, els desenvolupadors es reuneixen constantment amb els objectius de la validació d'entrada per al compliment de la pauta desitjada, buscar i reemplaçar fragments de prova i altres tipus d'operacions de processament d'informació de caràcters. Desenvolupar els seus propis algoritmes de validació condueix a la pèrdua de temps, la compatibilitat de codi i complexitat en el seu desenvolupament i modernització.
El ràpid desenvolupament dels idiomes d'Internet i disseny web requereix la creació de mitjans compactes i versàtils de processament de text amb una quantitat mínima requerida per a aquest codi. Que no és una excepció i és molt popular entre els principiants i desenvolupadors professionals del llenguatge PHP. El llenguatge d'expressions regulars com les plantilles de text per simplificar la tasca de gestionar el text i reduir el codi per desenes i centenars de línies. Molts dels problemes no es poden resoldre en absolut sense.
Les expressions regulars en PHP
llenguatge PHP té tres mecanismes per treballar amb expressions regulars - «ereg», «mb_ereg» i «preg». El més comú és la interfície «preg», les funcions proporcionar accés a la biblioteca del suport per expressions regulars PCRE, desenvolupat originalment per al llenguatge Perl, que s'inclou en el paquet de PHP. Preg de cerca de funcions en una correspondència de cadenes de text donat, d'acord amb un cert patró en el llenguatge d'expressions regulars.
Conceptes bàsics de sintaxi
Com a part d'un article curt és impossible descriure en detall tota la sintaxi d'expressions regulars, per això hi ha una literatura especial. Es presenta només els elements principals per mostrar les oportunitats de desenvolupador i entendre els exemples de codi.
En PHP expressió regular es defineix formalment molt difícil, i per tant simplificar la descripció. Una expressió regular és una cadena de text. Es compon d'una plantilla dedicada separador i el modificador que indica la manera de manejar-lo. La seva possible inclusió en les diverses alternatives i repeticions de patrons.
Per exemple, en l'expressió / \ d {3} - \ d {2} - \ d {2} / m divisor és "/", seguit de la plantilla, i el símbol «m» és el modificador.
Tot el poder de les expressions regulars es codifica mitjançant meta-caràcters. El metacarácter principal llengua és la barra invertida - "\". Es canvia el tipus de següent caràcters en el costat oposat (és a dir. E. convertit en un comodí caràcter ordinari i viceversa). Una altra important metacarácter és una línia recta «|», especifica la plantilla alternativa. Més exemples de meta-caràcters:
| ^ | Comenceu objecte o una cadena |
| ( | Comenceu sub-patró |
| ) | subpattern final |
| { | Inici quantificador |
| } | quantificador fi |
| \ d | dígit decimal de 0 a 9 |
| \ D | qualsevol caràcter que no és un nombre |
| \ s | símbol buit, espai, tabulació, |
| \ w | diccionari de símbols |
PHP, el processament d'expressions regulars, espai considerat com un caràcter vàlid per separat, de manera que l'expressió de XYZ i ABC ON són diferents.
Els sub-patrons
En PHP sub-patrons regulars dels parèntesis, i que de vegades es diuen "subexpressions". Realitzar les següents funcions:
alternatives d'assignació. Per exemple, el patró de calor (alguna cosa | Aus |) coincideix amb la paraula "calor", "Ocell de Foc" i "calent". I sense els suports que només serà una cadena buida, "au" i "calent".
sub-patró "espectacular". Això vol dir que si el patró coincideix amb la subcadena, a continuació, retorna tots els partits. Per a més claredat, donem un exemple. Donada la següent expressió regular: el guanyador rep ((or | daurat) (medalla | tassa)) - i la cadena de partits, "el guanyador es porta una medalla d'or." A més de la frase inicial, s'emetran els resultats de la recerca: "medalla d'or", "medalles", "or".
Operadors repeticions (kvadrifikatory)
En la compilació de l'expressió regular és sovint necessari analitzar la repetició de nombres i símbols. Aquest no és un problema, sinó una gran quantitat de repeticions. Però què fer quan no sabem el nombre exacte? En aquest cas, és necessari l'ús de meta-caràcters especials.
Per a una descripció de repeticions utilitzades kvadrifikatory - meta-caràcters per especificar el nombre. Kvadrifikatory són de dos tipus:
- comú entre parèntesis;
- reduïda.
quantificador general afectat pel nombre mínim i màxim d'element repeticions permeses en la forma de dos nombres en els aparells ortopèdics, com ara x {2,5}. Si no es coneix el nombre màxim de repeticions, el segon argument no s'especifica: x {2}.
quantificadors abreujats són símbols per el més comú de repeticions per tal d'evitar la sintaxi sobrecàrrega innecessària. En general, hi ha tres talls:
1. * - zero o més repeticions, el que equival a {0,}.
2. + - una o més repeticions, és a dir, {1} ...
3.? - zero o només una repetició - {0,1}.
Exemples d'expressions regulars
Per a aquells que aprenen les expressions regulars, exemples - el millor llibre de text. Li donem alguns que mostren les seves oportunitats amb un mínim d'esforç. Tot el codi és totalment compatible amb les versions 4.x de PHP i amunt. Per entendre completament la sintaxi i l'ús de totes les característiques del llenguatge que recomanem el llibre de J .. Friedl, "expressions regulars", que plenament considera la sintaxi, i hi ha exemples d'expressions regulars no només PHP, sinó també per a un Python, Perl, MySQL, Java, Ruby i C #.
Validació de Direcció de correu electrònic
Tasca. Hi ha una pàgina d'Internet en la qual se sol·licita al visitant adreça de correu electrònic. Expressió regular ha de comprovar l'exactitud de les adreces abans d'enviar missatges. Xec no garanteix que la bústia especificat en realitat existeix i rep missatges. Però, òbviament, eliminar a adreces equivocades que pugui.
Decisió. Igual que amb qualsevol llenguatge de programació, en PHP verificació de correu electrònic Direcció d'expressions regulars pot implementar-se de diferents maneres, i els exemples d'aquest article no són l'elecció final i només. Per tant, en cada cas, anem a proporcionar una llista de requisits que s'han de tenir en compte durant la programació i l'aplicació específica depèn enterament del desenvolupador.
Per tant, l'expressió que posa a prova un correu electrònic vàlid, ha de verificar les següents condicions:
- La presència a la línia de sortida del símbol @, i no hi ha buits.
- La part de domini de la direcció del símbol @, conté només caràcters vàlids per als noms de domini. El mateix succeeix amb el nom de l'usuari.
- En comprovar el nom d'usuari és necessari per determinar la presència de caràcters especials com ara un apòstrof o línia vertical. Tals símbols són potencialment perillosos i poden estar contingudes en aquests tipus d'atacs que SQL-injecció. Evita les direccions.
- noms d'usuari permeten a un sol punt, que pot no ser el primer o l'últim caràcter de la cadena.
- El nom de domini ha de contenir com a mínim dos i no més de sis caràcters.
Exemple, tenint en compte totes aquestes condicions es pot veure a la següent figura.
Validació d'una URL
Tasca. Comproveu si la cadena de text especificada no és vàlida un adreça URL. Un cop més, observem que les expressions regulars URL de comprovació es pot realitzar de diverses maneres.
Decisió. La nostra versió final és la següent:
/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /? $ /
Ara analitzar els seus components amb més detall mitjançant el dibuix.
| la reivindicació 1 | Abans que la URL no ha de tenir cap caràcter |
| reivindicació 2 | Verificar la presència del prefix obligatòria "http" |
| el punt 3 | No ha d'haver símbols |
| la reivindicació 4 | Si hi ha «s», els URL apunta a una connexió segura «https» |
| la reivindicació maig | porció requerida del "//" |
| reivindicació juny | No hi ha personatges |
| p. 7-9 | Verificació de la primera domini de nivell i la presència de punt |
| p.10-13 | Verificar el domini d'escriure el segon nivell i el punt |
| p.14-17 | Estructura d'arxius URL - un conjunt de nombres, lletres, guions, guions, punts, i una barra al final |
Comproveu els números de targetes de crèdit
Tasca. Cal per implementar la validació del número de targeta de crèdit introduïda dels sistemes de pagament més comuns. Una variant només per a les targetes Visa i MasterCard.
Decisió. En crear l'expressió que necessita per tenir en compte la possible presència de llacunes a la sala d'entrada. Els dígits al mapa estan dividits en grups per facilitar la lectura i dictat. Per tant, és natural que una persona pot tractar d'introduir un número d'aquesta manera (és a dir. E. Ús d'espais).
Escriu una expressió universal que té en compte els possibles espais o guions, és més complicat que simplement rebutjar tots els caràcters excepte dígits. Per tant, es recomana utilitzar una expressió comodí / D, que elimina tots els caràcters excepte dígits.
Ara vostè pot anar directament al número de xec. Totes les empreses, els emissors de targetes de crèdit utilitzen un format de número únic. En l'exemple que s'utilitza, i el client no ha d'introduir el nom de la companyia - es determina pel nombre. Les targetes Visa sempre comencen amb els números 4 i tenen una longitud de 13 o 16 dígits. MasterCard comença en el rang de 51-55 amb un llarg nombre 16. Com a resultat, s'obté la següent expressió:
Abans de processar l'ordre pot ser provat encara més els últims dígits del número, que es calcula en l'algoritme de Luhn.
verificar el número de telèfon
Tasca. Comprovar la correcció del número de telèfon introduït.
Decisió. El nombre de dígits dels números de telèfon fixos i mòbils varien considerablement depenent del país, tan universalment comprovar l'ús d'expressions regulars, número de telèfon correctament impossible. Però els números internacionals tenen un format estricte i perfecte per a comprovar el patró. Encara més, perquè més i més operadors telefònics nacionals estan tractant de complir amb el mateix estàndard. estructura de l'habitació és de la següent manera:
+ CCC.NNNNNNNNNNxEEEE, on:
- C - és el codi de país que consisteix en 1-3 dígits.
- N - nombre de fins a 14 dígits.
- I - extensió opcional.
Plus és un element indispensable, i el signe X està present només quan sigui necessari extensió.
Com a resultat tenim la següent expressió:
^ \ + [0-9] {1,3 } \ [0-9] {4,14}. (:?. + X)? $
Els nombres en el rang
Tasca. Cal assegurar-se nombre sencer coincidència d'un cert rang. A més, cal trobar una expressió regular només els números de la gamma.
Decisió. Aquí hi ha algunes expressions a alguns dels casos més comuns:
| Determinar hores de l'1 al 24 | ^ (1 [0-2] | [1-9]) $ |
| Dia al mes 1-31 | ^ (3 [01] | [12] [0-9] | [1-9]) $ |
| 0-59 segons o minuts | ^ [1-5]? [0-9] $ |
| Un nombre d'1 a 100 | * (100 |? [1-9] [0-9]) $ |
| Dia de l'any 1-366 | ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $ |
Cercar adreces IP
Tasca. Cal determinar si una determinada cadena és una adreça IP vàlida en format IPv4 en el rang de 000.000.000.000-255.255.255.255.
Decisió. Igual que amb qualsevol problema en el llenguatge de PHP, l'expressió regular té molts varintov. Per exemple, això:
La comprovació en línia de les expressions
Comproveu expressió regular correctament per a principiants pot ser difícil a causa de la complexitat de la sintaxi, que es diferencia dels llenguatges de programació "normals". Per resoldre aquest problema, hi ha molts emprovadors línia expressions que fan que sigui fàcil de comprovar l'exactitud de la plantilla que ha creat en el text real. El programador introdueix les dades d'expressió i la verificació i l'instant veure el resultat del processament. En general, no està present una secció de referència, que detalla les expressions regulars, exemples i diferències d'implementació dels idiomes més estesos.
Però a serveis en línia totalment la confiança no es recomana resultats a creadors que utilitzen PHP. Una expressió regular és escrita i verificada en persona, planteja qualificació i garanteix la inexistència d'errors.
Similar articles
Trending Now