Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo
Sommaire > Expressions > Expressions régulières
        Comment enlever les espaces qui sont en trop dans une chaîne ?
        Comment tester l'extension d'un fichier ?
        Comment parser un bbcode ?
        Comment insérer une chaîne de caractères dans une autre tous les x caractères à l'aide d'une expression régulière ?
        Comment contrôler une chaîne de caractères ?
        Comment vérifier un nombre à l'aide d'expressions régulières ?
        Comment enlever un caractère/ensemble de caractères d'une chaîne ?
        Comment mettre des mots en surbrillance dans un texte ?
        Comment supprimer les accents dans une chaîne de caractères ?



Comment enlever les espaces qui sont en trop dans une chaîne ?
auteur : BiD0uille
Pour enlever des espaces en trop dans une chaîne de caractères, il faut utiliser la fonction preg_replace (masque, replace, chaine) qui analyse chaine pour trouver l'expression rationnelle masque et remplace les résultats par replace.
Exemple :
$txt = "C e c i est un e x e m p l e";
echo preg_replace('#\s(\w)(?!\w)#', '$1', $txt); //Affiche Ceci est un exemple
lien : fr Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
lien : fr Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant

Comment tester l'extension d'un fichier ?
auteur : BiD0uille
Pour tester l'extension d'un fichier, il faut utiliser la fonction preg_match(string masque, string chaine) qui analyse chaine pour trouver l'expression qui correspond à masque Par exemple, est-ce qu'un fichier est bien un .jpg :
preg_match('/\.jpg$/', $fichier);
lien : fr Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
lien : fr Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant

Comment parser un bbcode ?
auteurs : Forum PHP, Kerod
Voici quelques exemples d'expressions régulières parsant des BBCodes :
BBCode [b]Forum Developpez.com[/b]

$str = "[b]Forum Developpez.com[/b]";
echo preg_replace('#\[b\](.*)\[/b\]#Usi', '<b>$1</b>', $str);
BBCode [i]Forum Developpez.com[/i]

$str = "[i]Forum Developpez.com[/i]";
echo preg_replace('#\[i\](.*)\[/i\]#Usi', '<i>$1</i>', $str);
BBCode [url]http://www.developpez.net[/url]

$str = "[url]http://www.developpez.net[/url]";
echo preg_replace('#\[url\](.*)\[/url\]#Usi', '<a href="$1">$1</a>', $str)."<br>";
BBCode [url=http://www.developpez.net]Forum Developpez.com[/url]

$str = "[url=http://www.developpez.net]Forum Developpez.com[/url]";
echo preg_replace('#\[url=([^\]]*)\](.*)\[/url\]#Usi', '<a href="$1" title="$2">$2</a>', $str);
BBCode [color=#FF0000]Forum Developpez.com[/color]

$str = "[color=#FF0000]Forum Developpez.com[/color]";
echo preg_replace('#\[color=([^\]]*)\](.*)\[/color\]#Usi', '<font color="$1">$2</font>', $str);
BBCode [quote]Forum Developpez.com[/quote]

$str = "[quote]Forum Developpez.com[/quote]";
$quote = '<div style="width:50%;background-color:#CCCCCC"><div style="background-color:#FFFFFF">Citation :</div>';
$quote .= '<div style="background-color:#CC0000">$1</div></div>';
echo preg_replace('#\[quote\](.*)\[/quote\]#Usi', $quote, $str);
BBCode [quote=FAQ]Forum Developpez.com[/quote]

$str = "[quote=FAQ]Forum Developpez.com[/quote]";
$quote = '<div style="width:50%;background-color:#CCCCCC"><div style="background-color:#FFFFFF">Citation :</div>';
$quote .= '$1 a écrit :<div style="background-color:#CC0000">$2</div></div>';
preg_replace('#\[quote=([^\]]*)\](.*)\[/quote\]#Usi', $quote, $str);
lien : fr Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
lien : fr Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant

Comment insérer une chaîne de caractères dans une autre tous les x caractères à l'aide d'une expression régulière ?
auteur : Forum PHP
Pour insérer une chaîne de caractères dans une autre déjà existante, on peut utiliser une expression régulière comme celle qui suit
preg_replace('#(\d{'.$x.'})#', '$1'.$chaine, $string);
Avec $chaine, la chaîne de caractères à ajouter et $x, la fréquence d'insertion (tous les x caractères).
Exemple :
Insertion d'un espace tous les 2 caractères
$string = '0123456789';
echo preg_replace('#(\d{2})#', '$1 ', $string); //Affiche 01 23 45 67 89
lien : fr Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
lien : fr Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant
lien : faq Comment insérer une chaîne de caractères dans une autre tous les x caractères ?

Comment contrôler une chaîne de caractères ?
auteur : Forum PHP
Pour vérifier que l'on a bien une chaîne de caractères dans une variable, on utilise la fonction preg_match() ou eregi() qui ne respecte pas la casse.
Exemple :
Avec preg_match
<?php
$pattern = '#^[a-zA-Zéàèêùôîï]*$#'; //Définition de l'ensemble des caractères acceptés
$chaine = "Test d'une chaîne de caractères";
if(preg_match($pattern, $chaine))
{
    echo $chaine . 'est bien une chaîne valide';
}
else
{
    echo $chaine . 'n\'est pas une chaîne valide';
}
//Affichera que la chaîne est valide.
?>
À noter que ce code est sensible à la casse d'où l'ajout des majuscules dans le pattern. De plus, ni les caractères (exceptés ceux qui sont définis dans $pattern) ni les chiffres ne sont acceptés.

lien : faq Comment vérifier le type d'une chaîne ?
lien : fr Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
lien : fr Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant

Comment vérifier un nombre à l'aide d'expressions régulières ?
auteur : Julien Plu
Une expression régulière qui vous permettra de reconnaître un nombre est :
[0-9]+
Une autre, plus directe et donc potentiellement plus rapide :
\d+
Exemple d'utilisation
function verifNombre ($nombre)
{
    if (preg_match ('/^\d+/i', $nombre)) {
        return false;
    } else {
        return true;
    }
}
lien : fr Tutoriel : initiation aux expressions régulières en PHP, par Guillaume Rossolini

Comment enlever un caractère/ensemble de caractères d'une chaîne ?
auteurs : Forum PHP, Kerod
À l'aide d'un expression régulière et de la fonction preg_replace(), qui analyse une chaîne de caractères pour trouver l'expression à remplacer, on peut supprimer un caractère ou un ensemble de caractères.
En effet, pour réaliser cette opération, on peut utiliser le code suivant :
$var = 'Jean-Michel'; //Chaîne initiale
$var = preg_replace('/[^a-z0-9]/', '-', $var);  //Remplace tout ce qui n'est ni chiffre ni lettre de l'alphabet par un trait d'union
lien : faq Comment remplacer/supprimer un mot/caractère dans une chaîne ?

Comment mettre des mots en surbrillance dans un texte ?
auteurs : Guillaume Rossolini, Kerod
Pour mettre un effet de surbrillance sur certains mots dans un texte, on peut utiliser la fonction preg_replace qui recherchera et effectuera la surbrillance de l'expression voulu.

Voici un exemple :
Surbrillance de certains pronoms
<?php  
  $words = array ('de', 'du', 'des', 'le', 'la', 'les'); //Définition des pronoms à mettre en évidence 
  $str = "L'édition de cette année du 20 au 27 mars partout en France traitera des dernières tendances en vogue, 
          comme le phénomène des blogs ou encore l'internet mobile.";  //Texte à mettre en surbrillance
  echo preg_replace( '/('.implode('|', $words).')/i', '<span style="font-weight: bold; color: red;">$1</span>', $str); 
?>
Et donc ceci affichera :

L'édition de cette année du 20 au 27 mars partout en France traitera des dernières tendances en vogue, comme le phénomène des blogs ou encore l'internet mobile.

Remarque :
implode('|', $words)
Cette instruction sert à transformer le tableau $words en chaîne de caractères, et chaque pronom sera séparé par le caractère |, qui signifie OU (alias OR), ce qui donnera à l'expression régulière tous les pronoms possibles à remplacer.

lien : fr Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
lien : fr Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant

Comment supprimer les accents dans une chaîne de caractères ?
auteur : s.n.a.f.u
Vous pouvez utiliser la fonction personnalisée suivante qui se base sur les expressions régulières pour remplacer les caractères accentués une fois convertis en entités HTML.
function remove_accents($str, $charset='utf-8') {
 
    $str = htmlentities($str, ENT_NOQUOTES, $charset);
 
    $str = preg_replace('#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#', '\1', $str);
    $str = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $str); // pour les ligatures e.g. '&oelig;'
    $str = preg_replace('#\&[^;]+\;#', '', $str); // supprime les autres caractères
 
    return $str;
}


Consultez les autres F.A.Q.


Les sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2003  Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com