..


Gesponsorde links

PCRE regular expression functies (en verschillen met de POSIX functies)

Artikel geschreven door Max Bossi
Pagina 1 van 4

We hadden al laten doorschemeren in de afgelopen dagen door de pagina's van onze blog, maar vandaag wil ik een onderwerp dat ik geloof zal van belang zijn voor duizenden ontwikkelaars te onderzoeken - zoals ik - dagelijks gebruik PHP om hun webapplicaties te ontwikkelen.

Vanaf versie 5.3 van PHP, in feite, ontwikkelaars die willen de mogelijkheden van reguliere expressies te exploiteren niet langer gebruik van POSIX functies maken (om zo te ereg () en familie spreken), maar moet noodzakelijkerwijs, gebruikt u de functies PCRE (Perl Compatible Regular uitdrukkingen), bijvoorbeeld, preg_match () .

De PCRE functies ingebouwd in PHP kunt u de typische reguliere expressie syntax van Perl (meer bepaald, de huidige implementatie biedt ondersteuning aan de syntax van Perl 5.005), dat is iets anders dan die van de POSIX-functies te gebruiken. Voor meer informatie over de syntaxis van PCRE is het mogelijk om te raadplegen van de handleiding beschikbaar op de officiële website van PCRE.org.

Vergelijkingen: de preg_match ()

Als u een vergelijking tussen een string en een patroon (een model geschreven in de vorm van reguliere expressies) maken moet preg_match () gebruik dat in feite, vervang ereg () en eregi ().

Met behulp van preg_match () is in gemeenschappelijk gebruik, heel simpel: je voorbij de functie van het patroon en de string te controleren. Als het patroon is voldaan, retourneert de functie 1 als 0 (of FALSE als er een fout).

In feite is de migratie van ereg () is niet ingewikkeld ding. U moet wat kleine vindingrijkheid in de formulering van het patroon.

Hier is een voorbeeld:

 



 <? Php







 if (preg_match ('/ mrwebmaster / i', 'Lang leve MrWebmaster!')) {



  



 echo "gevonden";







 Else {}



  



 echo "niet gevonden";







 }







 ?>

 
Dit is dezelfde:
 



 <? Php







 if (eregi ("mrwebmaster ',' Lang leve MrWebmaster! ')) {



  



 echo "gevonden";







 Else {}



  



 echo "niet gevonden";







 }







 ?>

 

In ons eenvoudige voorbeeld van het gebruik van preg_match () gebruikten we de string als een patroon

 



 / Mrwebmaster / s

 
Laten we de syntax te zien:
  • / ... / - Afbakening van het begin en het einde van de uitdrukking;
  • mrwebmaster - is een eenvoudige string die je wilt de tekst doorgegeven als het tweede argument te controleren;
  • i - 'i' na het sluiten scheidingsteken geeft aan dat de zoektocht mag NIET worden hoofdletter gevoelig (net zoals werd gedaan met behulp van de functie eregi ()). Dit technisch "i" is een modifier, in deze pagina een volledige lijst van modifiers toegestaan ​​in de syntaxis van PCRE.

Het verschil met ereg ()

Zoals je kunt het verschil met ereg () zien, zijn niet veel, laten we kort samenvatten hen:

  • het gebruik van begrenzers / ... / (eigenlijk kun je andere karakters gebruiken als scheidingsteken, maar de schuine streep is de gebruikelijke keuze);
  • hoofdlettergevoelig versie (eregi ()) wordt vervangen door het gebruik van de "i" na de afsluiting scheidingsteken;
  • de aanwezigheid van het teken / in het patroon vereist (als je gewend bent om slash als scheidingsteken) escape (\ /) om niet te verwarren met de scheidingstekens;
  • Er zijn enkele kleine verschillen in het beheer van ASCII-tekens (de POSIX-functies, in tegenstelling tot de PCRE akkoord met de numerieke ASCII-tekens: vb. Overeenkomt met het nummer 10 en 13 nieuwe lijn return; vice versa met de PCRE functies 10 staat voor uitsluitend de nummer tien).
  • de functie ereg () accepteert slechts drie parameters (patroon, tekst te worden gecontroleerd en eventueel een array om de resultaten te houden) en preg_match () geeft vijf (de eerste twee hebben we al gezien, nodig zijn, de andere drie zijn optioneel );

Op basis van de hierboven (en verschillen die zijn genoemd) kunnen we weer overwegen (gedeeltelijk) geldig theoretische uitleg over de syntax van reguliere expressies is te vinden op deze pagina van het artikel "reguliere expressies in PHP" gewijd aan de oude POSIX-functies .

In dezelfde categorie ...
E-Learning
Linux (Cursus) Linux (Cursus)
Complete gids voor open-source systeem. Van 49 €.
MySQL (Cursus) MySQL (Cursus)
Beheer van de open source database. Van 39 €.
PHP (Cursus) PHP (Cursus)
Volledige cursus voor het maken van dynamische websites. Van 49 €.
Gesponsorde links