Infos d'un tag <a ...>...</a> | [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]
|
Saisie de lien facile | [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]
|
Supprimer les caractères non-imprimables | [30-01-2002] |
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]
|
Espace insécable devant ; : ! ? | [06-11-2001] |
$texte = eregi_replace("([ ]*)([?!:;]{1})", " \\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.
|
Remplacer [u...u] par <U>...</U>' | [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.
|
Rendre des @ email 'cliquables' | [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]
|
Extraire seulement le nom du serveur d'une URL | [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/.
|
Déterminer l'extension d'un fichier | [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.
|
Présence d'un mot dans une url | [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
$regs[3] : /?p=prog&rub=regex (ou rien si l'url est du genre http://www.phpinfo.net) [Merci Flyounet pour cet envoi]
|
S'agit-il d'un Code Postal ? [2ème version] | [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 !
|
Extraire le dernier élément d'un nom de domaine | [03-12-2000] |
$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.
|
Bannir des mots d'un texte | [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]
|
Ne garder que le corps d'un fichier HTML | [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]
|
MySQL et les regex | [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]
|
Convertir une date MySQL en date jj/mm/aaaa ... en 1 seule ligne ! | [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]
|
Convertir une date MySQL en date jj/mm/aaaa | [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.
|
Supprimer les balises HTML | [07-11-2000] |
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 !
|
Rendre cliquable un texte entre < et > | [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.
|
Mettre des mots entre crochets en gras | [05-11-2000] |
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'.
|
Login correct ? | [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.
|
Remplacer les espaces multiples par des espaces simples | [24-09-2000] |
Toutes les séquences de 2 espaces consécutifs ou plus sont remplacées par un espace unique.
|
S'agit-il d'un Code Postal ? | [23-09-2000] |
$is_CP = ereg("^[0-9]{5}$", $chaine);
|
|
Code d'exactement 5 chiffres sans autres caractères.
|
Tester si une chaîne est alphanumérique | [23-09-2000] |
$is_alpha = ereg("^[0-9A-Za-z]+$", $chaine); // ou $is_alpha = ereg("^[[:alnum:]]+$", $chaine);
|
|
Des Chiffres et des Lettres uniquement ...
|
Rendre des URLs cliquables | [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.
|
Nettoyer une chaîne | [21-05-2000] |
Remplace dans une chaîne tous les caractères non-alphanumériques par 'rien'.
|