Général
- Présentation
- Les Symboles
- Les Métacaractères
- Les Ancres et Classes
- Les options
- Constantes prédéfinies
- Equivalences
- Créer un motif
- Les POSIX
- Les PCRE
- Les Plus des PCRE
- Les Assertions Part I
- Les Assertions Part II
- Motif conditionnel
- Mysql et les regex
- Url Rewriting
- Optimisation
- Aide mémoire
Les PCRE
Les POSIX
Pratique
Linux
Spécial php
- Conseils et Astuces
- Délimiteur PCRE
- Créer une bdd
- Utiliser du BBcode
- Le binaire
- Faire un panier
- Cases à cocher
- Citations imbriquées
- Colorateur syntaxique
- Les list-box ou combo-box
- Faire un diaporama
- Isset ou empty ?
- Une légende au survol
- Site en plusieurs langues
- Requêtes dynamiques
- Gestion des smiley
- Faire un moteur de template
- Timestamp php/mysql
- Timestamp mysql
- Matcher une adresse email
- Controler des données
Les billets de fred
- Les POSIX... mise en pratique !
- Limiter l'accès à un répertoire
- Alternance de couleurs
- Magic_quotes
- Désactiver les short_tags
- Require ou include : Bench
- Cohérence dans les chaines de caractères
- "echo" : lapin ou tortue ?
- Gérer un formulaire avec plusieurs boutons
- Le formulaire a t'il été soumis ?
- J'ai décidé de grossir
- La guerre des étoiles
- La guerre des boutons
- Headers already sent
- IP, IP, IP, houra !
- Créer un itérateur avec PHP5
- On vous conduit vers la lumière
- Comment utiliser MySQL avec PHP
- Non aux booléens !
- Php.ini : dist /recommended
- Include : gouffre ou fêlure ?
- Simple comme les sessions !
- Simplifier le traitement des erreurs
- Structurez vos applications
- Franchement, t'es trop for !
- Notice: Undefined variable (ou index)
- Proscrire les variables auto déclarées
La fonction preg_replace (depuis php3)
La syntaxe :preg_replace (motif de chaîne, nouveau motif, chaîne sujet, int limite).
preg_replace remplace le motif de chaîne par le nouveau motif et retourne la chaîne modifiée. Si int limite est posé, le nombre de remplacements sera limité.
replacement peut contenir des références de la forme \\ n ou, depuis PHP 4.0.4) $n. Cette dernière forme est recommandée. Ces références seront remplacées par le texte capturé par la n '-ième parenthèse capturante du masque. n peut prendre des valeurs de 0 à 99, et \\0 ou $0 , correspondent au texte de qui satisfait le masque complet.
Les parenthèses ouvrantes sont comptées de gauche à droite (en commençant à 1) pour déterminer le numéro de parenthèse capturante.
Exemples avec preg_replace
Exemple 1
Enlever des <br/> intempestifs Niveau de compréhension : facile
<?php
$chain="salut, c'est du texte avec de retours <br /><br /><br /><br /><br /><br /> et encore du texte et des retours inutiles à la fin \n\n\n<br/><br /><br /><br /><br />";
//--- on fait juste un echo pour voir le résultat (cochonné)
echo trim($chain).'<br/>Franchement, c\'est pas beau !';
//--- la fonction trim() enlève les caractères blancs en début et fin de chaine.
$chain=preg_replace('`(<br\s?/>){2,}`','<br/><br/> ',$chain);
echo '<hr>'.trim($chain).'Ceci est mieux, non ?';
?>
Explication :
Très simple... on va s'attacher à enlever les séries de plus de deux retours à la ligne de manière à rendre la mise en page plus correcte.
Exemple 2
Rendre cliquable un lien placé entre < et >Niveau de compréhension :facile
<?php
$chaineA="Test d'une url placée entre < et > <https://www.europeancards.com> balises ouvrante et fermantes";
//--- première version ---//
$chaine=preg_replace('`<([^>]+)>`', '<a href="$1" target="_blank">$1</a>', $chaineA);
echo $chaine;
//--- deuxième version ---//
echo '<br/>La même avec http:// dans le masque<br/>';
$chaine1=preg_replace('`<(https?://[^>]+)>`', '<a href="$1" target="_blank">$1</a>', $chaineA);
?>
Explication :
Très simple et très répandu sur la majorité des forums, etc...
Dans le premier on matche tout ce qui se trouve entre < et >.
Dans la deuxième version, on tient compte de la partie http:// ou https://
Sans celle-ci, le texte ne sera pas reconnu comme lien.
