FAQ PHP
FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
- 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 ?
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 : Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
Lien : Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant
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 : Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
Lien : Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant
Voici quelques exemples d'expressions régulières parsant des BBCodes :
$str
=
"
[b]Forum Developpez.com[/b]
"
;
echo preg_replace('
#\[b\](.*)\[/b\]#Usi
'
,
'
<b>$1</b>
'
,
$str
);
$str
=
"
[i]Forum Developpez.com[/i]
"
;
echo preg_replace('
#\[i\](.*)\[/i\]#Usi
'
,
'
<i>$1</i>
'
,
$str
);
$str
=
"
[url]https://www.developpez.net[/url]
"
;
echo preg_replace('
#\[url\](.*)\[/url\]#Usi
'
,
'
<a href="$1">$1</a>
'
,
$str
).
"
<br>
"
;
$str
=
"
[url=https://www.developpez.net]Forum Developpez.com[/url]
"
;
echo preg_replace('
#\[url=([^\]]*)\](.*)\[/url\]#Usi
'
,
'
<a href="$1" title="$2">$2</a>
'
,
$str
);
$str
=
"
[color=#FF0000]Forum Developpez.com[/color]
"
;
echo preg_replace('
#\[color=([^\]]*)\](.*)\[/color\]#Usi
'
,
'
<font color="$1">$2</font>
'
,
$str
);
$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
);
$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 : Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
Lien : Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant
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 :
$string
=
'
0123456789
'
;
echo preg_replace('
#(\d{2})#
'
,
'
$1
'
,
$string
);
//Affiche 01 23 45 67 89
Lien : Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
Lien : Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant
Lien : Comment insérer une chaîne de caractères dans une autre tous les x caractères ?
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 :
<?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 : Comment vérifier le type d'une chaîne ?
Lien : Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
Lien : Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant
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+
Lien : Tutoriel : initiation aux expressions régulières en PHP, par Guillaume Rossolini
À 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 : Comment remplacer/supprimer un mot/caractère dans une chaîne ?
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 :
<?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 : Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
Lien : Tutoriel : Les expressions régulières et manipulation de chaînes standards, par Hugo Étiévant
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. 'œ'
$str
=
preg_replace('
#\&[^;]+\;#
'
,
''
,
$str
);
// supprime les autres caractères
return $str
;
}