Général

Les PCRE

Les POSIX

Pratique

Linux

Spécial php

Les billets de fred

L'équivalence et les fonctions standards


Description de l'équivalence

Il est toujours très attractif pour celui qui aime les regex de se laisser aller à sa passion dans, quasi, tous les cas de figure. C'est très tentant en effet !
Mais il faut avouer qu'il est idiot de vouloir réinventer la roue à chaque instant et c'est pour cette raison que j'aborde ce petit chapitre sur l'équivalence.
Pourquoi faire une regex alors que PHP possède des fonctions natives qui réalisent le même travail ?
Comme dit ci-dessus, c'est totalement idiot !

Dans le traitement des chaînes de caractères, la règle à suivre est la suivante :

Règle générale:

Il faut toujours privilégier la fonction standard PHP à la création d'une regex effectuant le même travail.

Exemples d'équivalences

Fonction PHP Même fonction Regex

nl2br($ch) preg_replace("\n",'`
`',$ch);

ltrim($ch) preg_replace('`^\s+`','',$ch);

strcmp($ch1,$ch2) preg_match('`^'.$ch1.'$`',$ch2);

strip_tags($ch) preg_replace('`<[^>].+>`','',$ch);

stripslashes($ch) preg_replace('`\\\`','',$ch);

strtok($ch,$op) preg_split('`'.$op.'`',$ch);

strtr($ch, 'a','@') preg_replace('`a`','@',$ch);


N'oubliez d'ailleurs pas une des fonctions principales de substitution en php
str_replace();
Dans bien des cas, elle fera des merveilles en lieu et place de ereg_replace() ou preg_replace()

Allez, dans la foulée, je vous donne quelques fonctions standard et leur description

Tableau des fonctions standard

Libellé Descriptif

nl2br(); remplace les sauts de ligne \n par la balise xhtml

ucfirst(); mise en majuscule du premier caractères de la chaîne

ucwords(); mise en majuscule du premier caractère de chaque mot de la chaîne

strtoupper(); mise en majuscules de la chaîne

strtolower(); mise en minuscules de la chaîne

wordwrap(); fonction qui ajoute la césure (voir manuel php - fonction wordwrap)

substr_replace() substr_replace($ch1,$ch2,$pos,$n) remplace $n caractères depuis $pos dans $ch1 par $ch2

substr_count() substr_count($ch1,$ch2) compte le nombre d'occurrences de $ch2 dans $ch1

strpos() strpos($ch1,$ch2[,$n]) recherche la première occurrence $ch2 dans la chaine $ch1 à partir de la position $n (par défaut au début)

strrpos() strrpos($ch1,$ch2) même principe que strpos mais un caractère en partant de la fin de la chaîne.

strrev() strrev($ch1) inversion de la chaîne

str_repeat() str_repeat($ch1,$n) répète la chaîne $ch1 autant de fois que la valeur de $n

str_pad() str_pad($ch1,$n [,$ch2 [,$type]]) complète la chaîne $ch1 avec $n fois $ch2 ou $n espaces par défaut en fin de chaîne par défaut. Le quatrième argument $type permet de spécifier l'endroit de l'ajout : STR_PAD_LEFT ==> pour ajouter au début, STR_PAD_BOTH ==> pour ajouter de chaque côté de la chaîne.

strlen() strlen($ch1) retourne la taille d'une chaîne (nombre de caractères)

ord() ord($car) retourne la valeur ASCII du caractère

chr() chr($car) fonction réciproque de la fonction ord()

chunk_split() chunk_split($ch1 [,$n [,$ch2]]) découpe (morcelle) la chaîne $ch1 tous les $n caractères par insertion de $ch2

strtok() strtok($ch1,$sep) découpe (morcelle) la chaîne via le séparateur $sep

explode() explode($sep,$ch1 [,$n]) scinde la chaîne $ch1 en au plus $n éléments en utilisant le séparateur $sep. Cette fonction retourne un tableau.

implode() implode($sep,$ch1) fonction réciproque de explode. Retourne une chaîne de caractères en utilisant le séparateur

ltrim() ltrim($ch1) supprime les espaces en début de la chaîne

rtrim() rtrim($ch1) supprime les espaces en fin de la chaîne

trim() trim($ch1) supprime les espaces en début et fin de la chaîne

htmlentities() htmlentities($ch1) convertit tous les caractères spéciaux en leur entité HTML : exemple < devient < voir aussi htmlspecialchars()

addslashes() addslashes($ch1) échappe les caractères " et ' en les faisant précéder d'un antislash \

stripslashes() stripslashes($ch1) réciproque de addslashes() enlève les \

quotemeta() quotemeta($ch1) ajoute un antislash devant les caractères suivants :
. \\ + * ? [^] ($)

strstr() strstr($ch1,$ch2) retourne le contenu de $ch1 depuis la première occurrence de $ch2 jusqu'à la fin de la chaîne.

strstr() stristr($ch1,$ch2) identique à strstr mais insensible à la casse..

strchr() strchr($ch1,$ch2) retourne le contenu de $ch1 depuis la dernière occurrence de $ch2 jusqu'à la fin de la chaine.

substr() strstr($ch1,$i, [,$n]) retourne une sous-chaîne de $ch1 débutant à la position $i jusqu'à la position $n

strcmp() strcmp($ch1,$ch2) compare en binaire les deux chaînes - Retourne un entier positif si $ch1>$ch2, négatif si $ch1<$ch2 et nul si $ch1=$ch2

strncmp() strncmp($ch1,$ch2,$i) compare en binaire les deux chaînes sur les $n premiers caractères - Retourne un entier positif si $ch1>$ch2, négatif si $ch1<$ch2 et nul si $ch1=$ch2

strcasecmp() strcasecmp($ch1,$ch2) comme strcmp mais insensible à la casse

strncasecmp() strncasecmp($ch1,$ch2) comme strncmp mais insensible à la casse

strnatcmp() strnatcmp($ch1,$ch2) comme strcmp mais dans l'ordre naturel

strnatcasecmp() strnatcasecmp($ch1,$ch2) comme strcasecmp mais dans l'ordre naturel


Il y en a d'autres que je vous laisse le soin d'aller visiter à cette adresse :
>>> Cf->Doc PHP : Chaînes de caractères
ADAM Benjamin 2008 | Admin