« Programmation PHP/Expressions rationnelles » : différence entre les versions
Contenu supprimé Contenu ajouté
Aucun résumé des modifications |
|||
Ligne 4 :
{{Regex|PHP}}
* <code>?
* <code>
* <code>
{{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''.}}▼
}}
▲
De plus, on peut ajouter des options après les délimiteurs :▼
{| class="wikitable"
| i || insensibilité à la casse
Ligne 24 ⟶ 28 :
== Recherche ==
La fonction <code>ereg()</code> qui permettait de rechercher en regex
=== 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
Ligne 39 ⟶ 46 :
</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 :
Ligne 50 ⟶ 71 :
print_r($matches);
</source>
== Remplacement ==
|