« Programmation PHP/Expressions rationnelles » : différence entre les versions

aucun résumé des modifications
Aucun résumé des modifications
{{Regex|PHP}}
 
* <code>?!:</code> : négationignorer (exle groupe de capture lors de leur numérotation. Ex : <code>'#^((?!:sous-chaine_excluechaine_non_renvoyée|autre).)#'</code>).
* <code>$1?!</code> : résultatnégation. duEx premier: groupe de capture<code>((?!sous-chaine_exclue).)</code>
* <code>?:$1</code> : ignorerdésigne le résultat du premier groupe de capture lors dedans leurles numérotationremplacements.
 
{{attention|clear=left|
{{attention|clear=left|En PHP, les patterns regex doivent toujours être entourés d'un symbole délimiteur. On utilise généralement l'accent grave (`), mais on trouve aussi souvent / et #. Ceci sous peine de ne pas fonctionner : ''Warning: no ending delimiter found''.}}
{{attention|PourDe plus, pour chercher un dollar, "\$" ne fonctionne pas car c'est le format de certaines variables,. utiliserIl faut donc utiliser des apostrophes au lieu des guillemets : '\$'.|clear=left}}
}}
 
{{attention|clear=left|En PHP, les patterns regex doivent toujours être entourés d'un symbole délimiteur. On utilise généralement l'accent grave (`), mais on trouve aussi souvent / et #. Ceci sous peine de ne pas fonctionner :avec ''Warning: no ending delimiter found''.}}
De plus, on peut ajouter des options après les délimiteurs :
 
De plus, on peut ajouter des options après lesces délimiteurs :
{| class="wikitable"
| i || insensibilité à la casse
 
== Recherche ==
La fonction <code>ereg()</code> qui permettait de rechercher en regex mais a été remplacée par <code>preg_match()</code> depuis PHP 5.3.
 
=== preg_match() ===
La fonction <code>preg_match()</code><ref>http://php.net/manual/en/function.preg-match.php</ref> est la principale fonction de recherche<ref>http://php.net/manual/fr/ref.pcre.php</ref>. Elle renvoie un booléen et demande deux paramètres obligatoires : l'expression rationnelle et la chaine à scanner. Le troisième paramètre correspond à la variable dans laquelle stocker le tableau des résultats. Enfin, le quatrième accepte une liste de flags modifiant le comportement de base de la recherche.
 
* Exemple minimal :
<source lang=PHP>
<?php
</source>
 
* Exemple avancé :
Pour obtenir tous les résultats dans un tableau, remplacer ''preg_match'' par ''preg_match_all''<ref>http://www.expreg.com/pregmatchall.php</ref>, et ''print'' par ''print_r''.
<source lang=PHP>
<?php
$chaine = 'Test regex PHP pour Wikibooks francophone.';
 
if (preg_match('`.*Wikibooks.*`', $chaine)) {
{{attention|Pour chercher un dollar, "\$" ne fonctionne pas car c'est le format de certaines variables, utiliser donc des apostrophes au lieu des guillemets : '\$'.|clear=left}}
print('Le texte parle de Wikibooks');
} else {
print('Le texte ne parle pas de Wikibooks');
}
?>
</source>
 
Liste des flags :
* PREG_OFFSET_CAPTURE
 
=== preg_match_all() ===
Pour obtenir tous les résultats dans un tableau, remplacer ''preg_match'' par ''preg_match_all''<ref>http://www.expreg.com/pregmatchall.php</ref>, et ''print'' par ''print_r''.
 
Pour filtrer le contenu d'un fichier, par exemple récupérer tout ce qui se trouve entre parenthèses dans un tableau :
print_r($matches);
</source>
 
 
== Remplacement ==