Exercices
Questions à choix multiple

Leçon N° 16 : Fonctions de manipulations de texte

Fonctions simples
Le formattage de texte et de nombres
Explode/Implode morceller/regrouper des éléments de chaîne
Actions sur l'environnement
Les expressions régulières
Recherche des variables dans un texte
Fonctions sur les caractères (en développement)
Notes de page

Fonctions simples

Consulter la documentation pour avoir la liste complète.
Les principales fonctions simples sont indiquées ci-après.
La chaîne d'origine sera appelée «machaine», donc avec comme nom de variable «$maChaine», ou encore «$chaine_1» et «$chaine_2».
FonctionDescription
chop($maChaine)Enlève les espaces de fin de chaîne.
chr(int ascii code)Retourne le caractère correspondant au code ascii fourni
count_chars($maChaine)Compte de différentes façons les caractères d'une chaîne.
echo(...)Affiche une ou plusieurs chaînes.
ltrim($maChaine)Enlève les espaces de début de chaîne.
nl2br($maChaine)Insère une césure HTML avant chaque nouvelle ligne.
ord($maChaine)Retourne la valeur ASCII du premier caractère de la chaîne
print($maChaine)Affiche une chaîne.
rtrim($maChaine)Efface les espaces de fin de chaîne.
str_pad($maChaine, int pad_length
[,string pad_string[,int pad_type]])
Complète une chaîne avec une autre
str_repeat($maChaine,int multiplier)Répète une chaîne.
str_replace(search,replace,subject)Remplace les search par replace dans subject
strcasecmp($maChaine_1,$maChaine_2)Compare des chaînes, insensible à la casse.
strchr($chaine_1,$chaine_2)Renvoie chaîne 1 après la 1ière occurrence de la chîne_2 dans chaîne_1
strcmp($chaine_1,$chaine_2)Compare en binaire des chaînes. Comme strcasecmp mais est sensible à la casse
strip_tags($maChaine)Enlève les balises HTML et PHP.
addCSlashes($maChaine)Met des slash (\) devant les apostrophes comme en C
StripCSlashes($maChaine)Déquote une chaîne quotée avec addcslashes()
addSlashes($maChaine)Met des slash (\) devant les apostrophes
StripSlashes($maChaine)Enlève les slashs ajoutés par la fonction addslashes()
stristr($maChaine)Equivalent à strstr(), insensible à la casse (voir strstr() ).
strlen($maChaine)Retourne la longueur de la chaîne.
strnatcasecmp($chaine_1,$chaine_2)Comparaison de chaînes, insensible à la casse
strnatcmp($chaine_1,$chaine_2)Compare des chaînes par ordre "naturel"
strncasecmp($chaine_1,$chaine_2) Compare en binaire des chaînes de caractères
strncmp($chaine_1,$chaine_2,int len) Compare en binaire les premiers caractères
strpos($chaine_1,$chaine_2) Retourne position de la 1ière occurrence de 2 dans 1.
strrpos($chaine_1,$chaine_2) Retourne position de la dernière occur. de 2 dans 1.
strspn($chaine_1,$chaine_2)Retourne la taille du segment initial de la chaîne 1 qui est entièrement constitué de caractères contenus dans la chaîne 2.
strstr($chaine_1,$chaine_2)Renvoie la chaîne à partir de la 1ière occ. 2 dans 1
strtolower($maChaine)Met tous les caractères en minuscules.
strtoupper($maChaine)Met tous les caractères en majuscules.
strtr($chaine_1,$chaine_2,$chaine_3) Remplace les caratères de chaîne_2 par ceux de chaîne_3 dans chaîne_11
substr_count($chaine_1,$chaine_2) Compte le nombre de sous-chaînes 2 dans 1
substr_replace($chaine_1,$chaine_2,début,longueur) Remplace 1 par 2 à partir de «début» sur «longueur»
substr($chaine_1,start,len)Retourne une partie de 1 a partir de start sur len.
trim($maChaine)Enlève les espaces de début et de fin de chaîne
ucfirst($maChaine)Force le premier caractère d'une chaîne en majuscule.
ucwords($maChaine)Force le premier caractère de chaque mot en majuscule
wordwrap($chaine_1,n,$chaine_2)Retourne une chaîne en ajoutant chaine_2 dans chaine_1 tous les n caractères
Divers exercices
Nom du fichier : exercises_16/lesson_16_a_exercices_divers.php

Le formattage de texte

Fonctions disponibles:
FonctionDescription
printfAffiche une chaîne formatée.
vprintfidem prinf mais agit sur un tableau
sprintfRetourne une chaîne formatée (Mettre la chaîne dans une variable).
vsprintfRetourne une chaîne formatée (Mettre la chaîne dans une variable)
La chaîne de format est composée de 0 ou plus directives : généralement des caractères qui sont recopiés tels quels (hormis %), et des spécifications, chacune d'elle disposant de son propre paramètre.
Cela s'applique à sprintf() et printf().
    Chaque conversion consiste en un signe pourcentage (%), suivi d'un ou plusieurs éléments parmi ceux-ci :
  1. Un argument optionnel d'alignement, s'il est spécifié indique si le résultat doit être justifié à droite ou à gauche. Par défaut, il est justifié à gauche. Le caractère - signifie : justification à gauche.
  2. Une option de remplissage, qui indique quel caractère sera utilisé pour le remplissage, et la taille finale de la chaîne. Le caractère de remplissage peut être un espace ou le caractère zéro (0).). La valeur par défaut est l'espace. Une autre valeur peut être spécifiée en la préfixant par un guillemet simple (').
  3. Argument optionnel, «width» : s'il est spécifié, indique le nombre minimum de caractères que la conversion devrait retourner.
  4. Argument optionnel, «précision» s'il est spécifié, indique le nombre de chiffres utilisé pour afficher un nombre à virgule flottante. Cette option n'a d'effet que sur les nombres à virgule de type double. (Une autre fonction pratique pour formater les nombres est : number_format()).
  5. «type» s'il est specifié, indique le type de données passées en argument.
      Les types possibles sont :
    • % - un signe pourcentage : aucun argument nécessaire.
    • b - l'argument est traité comme un entier, et représenté comme un nombre binaire.
    • c - l'argument est traité comme un entier, et représenté comme un nombre ascii.
    • d - l'argument est traité comme un entier, et représenté comme un nombre décimal.
    • u - l'argument est traité comme un entier, et représenté comme un nombre décimal non signé.
    • f - l'argument est traité comme un double, et représenté comme un nombre à virgule flottante.
    • o - l'argument est traité comme un entier, et représenté comme un nombre octal.
    • s - l'argument est traité tel quel, et représenté comme une chaîne.
    • x - l'argument est traité comme un entier, et représenté comme un nombre hexadécimal (en minuscules).
    • X - l'argument est traité comme un entier, et représenté comme un nombre hexadécimal (en majuscules).
Exercices sur le formattage de textes
Nom du fichier : exercises_16/lesson_16_b0_format_text.php
Formattage des nombres :
Utiliser la fonction fonctionnumber_format:
Syntaxe :
string number_format ( float number [, int decimals [, string dec_point [, string thousands_sep]]])
    Permet donc de choisir :
  1. Le nombre de décimales à afficher (decimals)
  2. Le symbole à utiliser pour le point décimal (dec_point)
  3. Le symbole à utiliser pour le séparateur des milliers (thousands_sep)
number_format() retourne une chaîne représentant le nombre "number" formaté.
Cette fonction accepte un,deux ou 4 paramètres (mais pas trois).
Si le seul paramètre number est donné, il sera formaté sans partie décimale, mais avec une virgule entre chaque millier. Si les deux paramètres number et decimals sont fournis, number sera formaté avec decimals décimales, un point (".") comme séparateur décimal et une virgule entre chaque millier.
Note : Seul le premier caractère du paramètre thousands_sep est utilisé. Par exemple, si vous utilisez foo comme séparateur de milliers, sur le nombre 1000, number_format() retournera 1f000. En notation française, on utilise généralement deux chiffres après la virgule, une virgule comme séparateur décimal, et un espace comme séparateur de milliers.
Exercices sur le formattage de nombres
Nom du fichier : exercises_16/lesson_16_b1_format_number.php

Explode / Implode : morceller/regrouper des éléments de chaîne

FonctionCommentaires
explodeScinde une chaîne en morceaux, grâce à un délimiteur.
implodeRegroupe tous les éléments d'un tableau dans une chaîne, avec une chaîne de jointure.
joinRegroupe tous les éléments d'un tableau dans une chaîne, avec une chaîne de jointure.
strtokMorcelle une chaîne fonction : fonction très empoyée et commune à C, java, PHP...
La fonction span class=code_texte>strtok permet de découper automatiquement un texte en morceaux (tokens=jetons), en se basant sur un séparateur (espace,...) et de ranger chaque morceau dans un tableau facilement manipulable.
    Lors du premier appel de la fonction, il faut lui envoyer deux paramètres :
  1. Le texte à découper
  2. Le séparateur
Lors des appels suivant, le séparateur suffit, et à chaque appel la fonction renvoie le "jeton" suivant.
Cette fonction est très utilisée par exemple pour convertir une table mySQL en texte et vice-versa.
Note : Attention en cas de jeton vide, par défaut il va à la fin
Les tokens
Nom du fichier : exercises_16/lesson_16_c0_tokens.php

Actions sur l'environnement

FonctionCommentaires
localeconvLit les paramètres locaux(symbole monétaire, décimal...)
setlocaleChange les paramètres locaux (symbole monétaire, décimal...)
Accès aux variables locales
Nom du fichier : exercises_16/lesson_16_d0_local_vars.php

Les expressions régulières (Fonction Posix)

Une expression régulière est un ensemble de caractères décrivant d'une façon plus ou moins codée une donnée standard :N° sécurité sociale, N° téléphone, code postal pour un pays donné....
La fonction ereg permet de rechercher si le formattage d'un texte correspond à celui d'une expression régulière.
Syntaxe :
ereg ( string pattern, string string [, array regs])
Recherche dans la chaîne string les séquences de caractères qui correspondent au masque pattern.
Autres fonctions :
FonctionCommentaires
ereg_replace pour effectuer des remplacements
eregi (idem ereg mais insensible à la casse)
eregi_replace (idem ereg mais insensible à la casse)
Les principaux caractères utilisés pour la codification des expressions régulières sont
CaractèreSignification
^ Début de la chaîne
$ Fin de la chaîne
n* Aucun ou plus des caractères 'n'
n+ Un ou plus de 'n'
n? Aucun ou un 'n'
n{2} Deux 'n'
n{2,} Deux 'n' ou plus
n{2,4} Entre 2 et 4 'n'
() Parenthèses pour regrouper les expressions
(n|a) Soit un 'n' ou un 'a'
. N'importe quel caractère
[1-6] Un nombre entre 1 et 6
[c-h] Une lettre minuscule entre c et h
[D-M] Une majuscule entre D and M
[^a-z] Pas de minuscule entre a et z
[_a-zA-Z] Un souligné ou n'importe quel caractère de l'alphabet (pas les accentués)

Exemples: ^.{2}[a-z]{1,2}_?[0-9]*([1-6]|[a-f])[^1-9]{2}a+$
  • Soit un chiffre entre 1 et 6
  • Soit un caractère minuscule entre a et f
  • CaractèreSignification
    ^ Début de la chaîne
    {2} Une chaîne commençant par deux caractères quels qu'ils soient
    [a-z]{1,2}Suivi par un ou deux caractères en minuscule
    _?Suivi par 0 ou 1 souligné
    [0-9]*Suivi par 0 ou plus de chiffres
    ([1-6]|[a-f])
      Suivi par
    [^1-9]{2}Suivi par deux caractères qui ne sont pas des chiffres entre 1 et 9
    a+Suivi par un ou plus de caractères a à la fin
    $Fin de la chaîne de description
    Consulter le site :
    regexlib.com : toute une panoplie d'expressions régulières
    Exercice sur les expressions régulières
    Nom du fichier : exercises_16/lesson_16_e0_regular_expressions.php

    Recherche les variables dans une chaîne

    La fonction parse_str analyse une chaîne, et en déduit des variables contenues dans la chaîne, et leur valeur.
    Recherche de variables dans une chaîne
    Nom du fichier : exercises_16/lesson_16_f0_parse_str.php

    Fonctions sur les caractères

    En cours de developpement, consulter la documentation :
    FonctionCe qu'elle fait
    ctype_alnum Vérifie qu'un caractère est alpha-numérique
    ctype_alpha Vérifie qu'un caractère est alphabétique
    ctype_cntrl Vérifie qu'un caractère est un caractère de contrôle
    ctype_digitVérifie qu'un caractère est numérique
    ctype_graph Vérifie qu'un caractère est imprimable (sauf " ", espace)
    ctype_lowerVérifie qu'un caractère est en minuscule
    ctype_printVérifie qu'un caractère est imprimable
    ctype_punct Vérifie qu'un caractère est imprimable, sans être ni un espace, ni un caractère alpha-numérique
    ctype_space Vérifie qu'un caractère est caractère blanc (espace, tabulation...)
    ctype_upperVérifie qu'un caractère est en majuscule
    ctype_xdigit Vérifie qu'un caractère représente un nombre héxadécimal

    Tous droits réservés. 2005-2008