Travail sur chaînes
Fonctions
pour code HTML et MySQL
Gestion
des caractères verrouillés
La fonction
addslashes() rajoute des slashes (backslashes
\) devant tous les caractères qui doivent
être verrouillés. Ces caractères sont le « " », le « ' », le « \ » et le
caractère nul (NULL). Ainsi la
chaîne résultante
peut être utilisée pour être placée en base de données via des commandes SQL.
La fonction
stripslashes() effectue l'opération inverse : elle supprime les anti-slash sauf
dans le cas
des doubles anti-slash
\\, elle n'en supprime qu'un.
$chaine="L'oreille
cassée";
$c1=addslashes($chaine);
echo $c1; // L\'oreille
cassée
echo stripslashes($c1);
// L'oreille cassée
balises
et caractères spéciaux HTML
La fonction
strip_tags() permet de
filtrer une chaîne
contenant des balises
(tags) HTML en
autorisant
certains et interdisant d'autres. Le premier paramètre est la chaîne HTML. Le
second est
la liste
des tags autorisés.
ATTENTION : la
fonction ne modifie pas
le contenu des balises
autorisées, laissant
ainsi les attributs CLASS, STYLE et appels JavaScript.
$chaine="<u><i><b>Bonjour
les amis</b></i></u>";
echo strip_tags($chaine,'<u><i><b>');
// Bonjour les amis
echo strip_tags($chaine,'<b>');
// <b>Bonjour les amis</b> en gras
La fonction
htmlspecialchars() convertit certains
caractères spéciaux en
entités HTML. Ces
caractères sont :
– « & » :&
– « " » : " si
ENT_NOQUOTES est utilisé
– « ' » : ' si ENT_QUOTES
est utilisé
– « < » : <
– « > » : >
Le second
paramètre (ENT_xxx) définit le fonctionnement par rapport aux quotes.
La fonction
htmlentities() va plus loin en remplaçant TOUS les caractères qui ont des
équivalents
en HTML. Pour
décoder une telle chaîne, il faut alors utiliser la fonction html_entity_decode().
La fonction nl2br()
remplace tous les retour-chariots d'une chaîne en retours à la ligne HTML : <br
/>.
La fonction
urlencode() formate une chaîne pour son
utilisation dans une URL. Les espaces sont
S. ROHAUT Cours
Programmation PHP Page 59/93remplacés par des « + » et tous les caractères non-alphanumériques
(sauf « - », « . » et « _ ») sont
remplacés par leur
équivalent hexadécimal %XX. Une telle chaîne sera décodée par la
fonction
urldecode().
Fonctions texte générales
Découper
une chaîne
La fonction
explode() permet de découper une chaîne selon un séparateur. Elle retourne un
tableau
contenant les
divers éléments découpés. Le premier paramètre est le séparateur, le second la
chaîne.
Un troisième
paramètre permet de limiter le nombre de valeurs retournées.
$chaine='login:pwd:uid:gid';
$tab=explode(':',$chaine);
foreach($tab as $value) echo $value; // login
pwd uid gid
La fonction
inverse se nomme implode().Le premier paramètre est la « colle » : le ou les
caractères
de séparation qui seront
placés entre les
divers éléments de
la chaîne reconstituée. Le
second
paramètre est un
tableau.
// suite de l'exemple
précédent
$newchaine=implode(',',$tab);
echo $chaine; // login,pwd,uid,gid
La fonction join()
est un alias de implode().
On peut aussi
effectuer un découpage tous
les n caractères avec la fonction
chunk_split(). Elle
découpe le
premier paramètre en
morceaux de longueur
du second paramètre
(par défaut 76
caractères) avec
comme séparateur le troisième paramètre (\n\r par défaut).
$chaine='FF5EB649C4';
$n_chaine=chunk_split($chaine,2,':');
echo n_chaine; // FF:5E:B6:49:C4
La fonction
wordwrap() effectue la césure d'une chaîne. La chaîne résultante sera le texte
découpé
en tenant compte
des mots. Par défaut la longueur (second paramètre) est de 75 caractères. On
peut
préciser la chaîne
de coupure de ligne en troisième paramètre, et le dernier paramètre s'il est à 1
force la coupure même au milieu d'un mot. Pour
un affichage en HTML, il faut
encapsuler le
résultat dans un
nl2br().
$chaine="Bonjour les
amis et bienvenus
dans le merveilleux
monde du langage
PHP
!";
echo nl2br(wordwrap($chaine,20));
retourne
Bonjour les amis
et
bienvenus dans le
merveilleux monde
du langage PHP !
La fonction str_split()
découpe une chaîne de caractère en tableau. Par défaut la longueur est de 1
mais on peut la
choisir en second paramètre.
S. ROHAUT Cours
Programmation PHP Page 60/93On peut découper une partie de chaîne avec la
fonction substr(). Le premier paramètre est la chaîne,
le second le début
(depuis 0) et le dernier la longueur. Le début de la chaîne peut être une
valeur
négative et dans
ce cas on compte en partant de la fin de la chaîne.
$chaine='abcdef';
echo substr($chaine,0);
// abcdef
echo substr($chaine,2,3);
// cde
echo substr($chaine,-1);
// f
echo substr($chaine,-3,2);
// de
Les fonctions trim(),
rtrim() et ltrim() suppriment les caractères invisibles à droite (trim, rtrim) et
à
gauche (trim, ltrim)
de la chaîne.
Rechercher
et comparer
La fonction
strcmp() effectue une comparaison
de deux chaînes. Retourne <0 si la chaine1 est
inférieure à
chaine2, 0 si égale,
>0 sinon. La fonction
strncmp() à le même effetmais sur une
longueur donnée, en
troisième paramètre.
Les fonctions
strcasecmp() et strncasecmp() sont des versions insensibles à la casse.
La fonction
strstr() recherche la
première occurrence du second paramètre dans
le premier et
retourne la chaîne
depuis cette position jusqu'à la fin. La fonction strchr() est un alias de
strstr(). La
fonction stristr()
est la même mais insensible à la casse.
La fonction
strrchr() effectue quasiment la même
chose sauf qu'elle retourne la fin de la chaîne
depuis le dernier
caractère trouvé.
La fonction strpos()
recherche dans la chaîne du premier paramètre la chaîne en second paramètre
et retourne sa
position. On peut placer en troisième paramètre la position de départ de la
recherche.