Liste d'expressions régulières

Teste toute les balises d'un code HTML

</?[^>]*>

Teste toutes les balises ‘style’ d’un code HTML ainsi que le contenu

<style[^>]*>(.|\n)*</style>(\r\n)?

Teste toutes les balises ‘div’ et leur contenu qui ont ‘toto’ en id

<div [^>]*id=toto[^>]*>(.|\n)*</div>(\r\n)?

Teste une chaîne au format horaire (HH:MM) exemple:18:55

^[0-1][0-9]|[0-2][0-3]):[0-5][0-9]$

Teste une chaîne au format date (JJ/MM/AAAA) exemple:24/12/2007

^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-9]{4}$

Teste une chaîne au format prix. Exemple:12,20 ou 250.15

^[0-9]+((,|\.)+([0-9]|[0-9][0-9]))?$


20/09/2007 09:50 -

Liste d'expressions régulières · 05/01/2007 09:50 · maniT4c
Niveau
..........
En rapport...

Les expressions régulieres en php

Une expression régulieres permet de rechercher de façon précise une chaîne de caractère dans une autre.
Par exemple on pourrait rechercher dans un texte toutes les lettres 'a' qui ont un 'r' juste avant.

La syntaxe

La méthode d'écriture peut sembler rébarbative et incompréhensible mais si on s'y attarde on se rend compte que c'est de la simple logique.

Code Descriptif
\ Caractère d'échappements
^ début de la chaîne
$ Fin de la chaîne
.N'importe quel caractère sauf nouvelle ligne
[ et ]Début et fin de définition de classe
|Alternative (ex: x|y vaut x ou y)
( et ) début et fin de sous masque
?indique que le caractère précédent doit être présent 0 ou 1 fois
*indique que le caractère précédent doit être présent 0 fois ou plus
+indique que le caractère précédent doit être présent 1 fois au moins
{ et }Début et fin de quantificateur, le contenu est un entier, veut dire que le caractère qui précède l'accolade ouvrante est présent exactement n fois (ex : p{5} pour 5 p d'affilé)
\nnouvelle ligne
\rretour chariot
\ttabulation
\xhhcaractère en hexadécimal, de code hh
\dtout caractère décimal
\D tout caractère qui n'est pas un caractère décimal
\s tout caractère blanc (espace)
\S tout caractère qui n'est pas un caractère blanc
\w tout caractère de “mot”, identique à [A-Za-z0-9_]
\W tout caractère qui n'est pas un caractère de “mot”, identique à [^A-Za-z0-9_]”.
\blimite de mot (ex: er\b correspond a 'er' dans 'marcher' mais pas dans 'merci'
\Bpas limite de mot (ex: er\B correspond a 'er' dans 'marcher' et dans 'merci'

Les classes de caractères

Entre les crochets se trouve les classes de caractère. Dans ces classes, on peu utiliser seulement quelques caractères :

Code Descriptif
\ Caractère d'échappements
^ Placé au début de la classe veut dire : Tous sauf. (ex: [^0-5] donne tous sauf les chiffre de 0 à 5)
- Intervalle (ex: [a-z] donne de a à z

preg_replace

preg_replace est la fonction la plus utilisé avec les expressions régulieres, elle permet de remplacer un pattern (votre expression) dans une chaîne. exemple :

php
   $txt="<qui> demande a sa maman des bonbon ?";
   $pattern = "</?[^>]*>";
   // remplace par vide
   echo (ereg_replace($pattern,"TOTO",$txt));
   //affichera :
   //TOTO demande a sa maman des bonbons ?

Quelques patterns utiles

Quelques fonctions

php
function RemoveUnwantedCharFromBalise($balise, $char) {
	//Enlève un caractère a une balise
	//Exemple <toto:plop> , on enlève le ':' ça donne <totoplop>
	$pattern = '(<[^> ]*)'.$char.'([^>]*>)';
	return ereg_replace($pattern,'\\1\\2',$balise);
}
function RemoveUnwantedCharFromAttrib($src,$char) {
	//Enlève un caractère dans un attribut
	//Ex : <a toto:plop="ok"> on enleve le ":" on à <a totoplop="ok">
	$pattern = '(<[^> ]* [^>]*)'.$char.'([^>]*=)';
	return ereg_replace($pattern,'\\1\\2',$src);
}
function AddHttpToSrc($src, $root) {
	//Rajoute http aux images qui ne l'ont pas dans le src
	//Ex : src="blog/img.jpg" deviendrais src="http://moi.com/blog/img.jpg"
	$pattern = 'src="([^:"]*)"';
	return ereg_replace($pattern,'src="'.$root.'\\1"',$src);
}
function AddTargetToLink($src) {
	//Rajoute un target="_blank" aux liens qui ne l'ont pas
	$pattern = '(<a [^>]*)>';
	if (ereg ($pattern, $src, $regs)) {
		if (stripos($regs[1], 'target')===false) {
			//si ya pas target
			return ereg_replace($pattern,'\\1 target="_blank">',$src);
		}
	}
	return $src;
}
function GetOnlyString($t) {
	//Enleve tous les autres caractères que des chiffres et des lettres (espace supprimé aussi)
	$pattern = '/[a-zA-Z0-9]/';
	$ret='';
	for($i=0;$i<strlen($t);$i++) {
		if (preg_match($pattern,$t{$i}))
			$ret.=$t{$i};
	}
	return $ret;
}


Liste d'expressions régulières · 05/01/2007 09:50 · maniT4c