Archives / Expression Régulières

Postée le 30-06-2002


function link_extract($str)
{
    if (
ereg("(<a href=\"([a-zA-Z\.]{1,})\".+>([a-zA-Z]{1,})</a>)?"$str,$out))
        return(array(
$out[2],$out[3]);
}
$n link_extract('<a href="foo.html" class=topnav target=_blank>bar</a>');
print_r($n);


Regex qui permet d'extraire la destination et la valeur d'un lien html. [Merci à anger]


Postée le 23-02-2002


$lien 
"[LIEN url=http://www.phpinfo.net/]Cliquez ici[/LIEN]";
echo 
preg_replace('/(\[LIEN url=)([^\]]*)\](.*?)(\[\/LIEN\])/'"<A href='\\2'>\\3</A>"$lien);


Crée un lien cliquable à partir d'un système de tags particulier, différent du HTML classique. [Merci à Laurent aka LPA]


Postée le 30-01-2002


$chaine 
preg_replace("/\\x0|[\x01-\x1f]/U","",$chaine);


Cette regex permet de supprimer dans une chaîne les 32 premiers caractères de la table ASCII, ceux qui ne sont pas imprimables (escape, retour chariot, etc...). [Merci à Sémhur]


Postée le 06-11-2001


$texte 
eregi_replace("([ ]*)([?!:;]{1})""&nbsp;\\2"$texte);


Cette expression régulière insère un espace insécable devant les ponctuations doubles ( ; : ! ? ) dans un texte. Pour ceux qui en ont assez de voir des ? se balader en début de ligne.


Postée le 08-07-2001


echo preg_replace("/(\[u)(.*?)(u\])/""<U>\\2</U>""Petit [utexteu] à [umodifieru].");


Cette regex permet d'adopter son propre système de balisage lors de la saisie d'un texte puis de le convertir ensuite en un balisage standard HTML.


Postée le 05-07-2001


$texte 
eregi_replace("([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)",
                       
"<A HREF=\"mailto:\\1\">\\1</A>"$texte);


Cette regex prend toutes les adresses email contenues dans un texte (du type nom.prenom@domaine.com par exemple et les transforme en liens mailto: cliquables. [Merci à Antoine Drochon]


Postée le 29-06-2001


$serveur 
ereg_replace("(http://[^/]*/)(.*)""\\1"$url);


Ne conserve d'une url que le nom du serveur. Exemple : http://www.phpinfo.net/test/index.php3 donne http://www.phpinfo.net/.


Postée le 13-03-2001


ereg
("\.([^\.]*$)"$fichier$elts);
echo 
$elts[1];


Récupère dans le tableau $elts la chaîne suivant le dernier . de $fichier, ou une chaîne vide s'il n'y a pas de point.


Postée le 16-01-2001


$contient 
=
  
eregi("^(http[s]?\:\/\/)(.*\.?phpinfo\.?[A-Za-z0-9_.-]*\.[A-Za-z]{2,3})(.*)$"$url$regs);


Indique si une url contient un mot ou non (phpinfo dans l'exemple). Dans l'affirmative, voici le résultat :
$regs[1] : http:// (https:// si tel avait été le cas)
$regs[2] : www.phpinfo.net\r\n$regs[3] : /?p=prog&rub=regex (ou rien si l'url est du
           genre http://www.phpinfo.net)
[Merci Flyounet pour cet envoi]


Postée le 05-01-2001


$is_CP 
ereg("^((2[A-B])|([0-9]{2}))[0-9]{3}$"$chaine);


Parce que j'avais oublié de traiter le cas des CP corses voici la correction apportée par Romuald. Mais on me dit aussi que ce type de représentation n'est pas 'standard'. A vous donc de choisir entre la v1 et la v2 !


Postée le 03-12-2000


$chaine 
"www.phpinfo.net";
echo 
ereg_replace("^(.*)\.(.*)$""\\2"$chaine);


$chaine = "www.phpinfo.net"; echo ereg_replace("^(.*)\.(.*)$", "\\2", $chaine); Cette regex retourne en fait le texte se trouvant après le dernier point dans la chaîne.


Postée le 29-11-2000


$blurb 
"@!#$";
$message "Mais où est passée la clé de la maison.";
$bannir "mais|clé";
echo 
preg_replace("/(^|[^a-zA-Z])($bannir)([^a-zA-Z]|$)/si"'\\1'.$blurb.'\\3'$message);


Remplace dans le message tous les mots à bannir ('mais' et 'clé') par le blurb mais laisse intacts les mots contenant des mots à bannir (maison par exemple). Elle est un peu compliquée celle-là, mais elle fonctionne très bien ! [Merci une nouvelle fois à Fred]


Postée le 28-11-2000


$body 
=
eregi_replace('(^.*<html[^>]*>.*<body[^>]*>)|(</body[^>]*>.*</html[^>]*>.*$)'''$texte);


Cette regex extrait le texte compris entre les balises <HTML>...<BODY> et </BODY></HTML>. [Merci à Fred]


Postée le 15-11-2000

SELECT * FROM newsletter WHERE email REGEXP '(pierre|paul|jacques)';

MySQL sait aussi utiliser les expressions régulières. Cette requête recherche tous les enregistrements dont l'email comprend 'pierre', 'paul', ou 'jacques'. [Merci à Fred]


Postée le 15-11-2000


$date 
ereg_replace('^([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})$''\\3/\\2/\\1'$date_mysql);


La même chose que précédemment, mais cette fois-ci les occurrences sont directement récupérées pour reconstruire la date. [Merci à Fred]


Postée le 08-11-2000


ereg
("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})"$date_mysql$tJour);
$date $tJour[3].'/'.$tJour[2].'/'.$tJour[1];


Décompose les éléments de la chaîne en 3 parties (année, mois, et jour), les place dans un tableau. Ce tableau est ensuite réorganisé pour fabriquer la date au bon format. Un explode ou un DATE_FORMAT auraient bien sûr été préférables, mais cette regex est un très bon exemple de récupération des éléments d'une chaîne dans un tableau.


Postée le 07-11-2000


$chaine 
ereg_replace("<[^>]*>"""$chaine);


Remplace toutes les occurrences de <quelquechose qui ne contient pas de signe 'supérieur'> par rien. Oui, un strip_tags() aurait fait la même chose, mais là on veut s'amuser avec les Regex !


Postée le 06-11-2000



$chaine 
eregi_replace("<([^>]*)>""<A HREF=\"\\1\" TARGET=\"_blank\">\\1</A>"$chaine);


C'est le principe utilisé par Phorum pour permettre la saisie d'URLs dans les messages sans pour autant autoriser les balises HTML.


Postée le 05-11-2000


$chaine 
eregi_replace("\[([^]]*)\]""<b>\\1</b>"$chaine);


Met en gras tous les mots d'un texte placés entre [ et ] et retire ces 2 caractères. 'Bonjour [Bob] et [Bill]' devient 'Bonjour Bob et Bill'.


Postée le 05-11-2000


$is_login 
ereg("^[a-zA-Z][a-zA-Z0-9]{3,19}$"$chaine);


Un login ne peut pas commencer par un chiffre, n'est constitué que de chiffres et de lettres, fait de 4 caractères mini à 20 caractères maxi.


Postée le 24-09-2000


$chaine 
ereg_replace("[ ]{2,}"" "$chaine);


Toutes les séquences de 2 espaces consécutifs ou plus sont remplacées par un espace unique.


Postée le 23-09-2000


$is_CP 
ereg("^[0-9]{5}$"$chaine);


Code d'exactement 5 chiffres sans autres caractères.


Postée le 23-09-2000


$is_alpha 
ereg("^[0-9A-Za-z]+$"$chaine);
  
// ou
$is_alpha ereg("^[[:alnum:]]+$"$chaine);


Des Chiffres et des Lettres uniquement ...


Postée le 20-08-2000


$chaine 
eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])",
"<A HREF=\"\\1://\\2\\3\" TARGET=\"_blank\">\\1://\\2\\3</A>",$chaine);


Rend cliquable toutes les chaînes du type http://..., ftp://..., mailto://..., etc, contenues dans un texte.


Postée le 21-05-2000


$chaine 
eregi_replace("[^a-z0-9]"""$chaine);


Remplace dans une chaîne tous les caractères non-alphanumériques par 'rien'.


Haut de page 
Copyright © 2000-2006 - J-Pierre Dézélus - MàJ le 20-10-06 à 21:01:49 - phpInfo.net est hébergé par OVH