Informations sur les chaines en PHP
PHP propose plusieurs fonctions pour obtenir des informations sur les chaines de caractères, comme connaître le nombre de lettres, le nombre de mots..
Accéder directement à une chaîne
Pour récupérer un caractère sur une chaîne, il suffit d’indiquer à la fin de la variable, entre les accolades [ ], sa position (zéro correspond à la première position).
<?php
$texte = "le soleil";
echo $texte[1] ; // affiche e
?>
Taille d’une chaîne
Pour connaître le nombre de caractères contenu dans une chaîne, vous pouvez utiliser la fonction strlen()
<?php
$str = 'david';
echo strlen($str); // 5
$str = ' ef gh ';
echo strlen($str); // 7
?>
Note : les espaces avant et après sont aussi comptés. De plus si vous utilisez des accents, le nombre de caractères peut être erroné si vous êtes en UTF-8. La solution consiste à décoder avec la fonction utf8_decode()
<?php
$str = 'éé';
echo strlen($str); // indique 4 caractères
echo strlen(utf8_decode($str)); // indique bien 2 caractères
?>
Nombre de mots dans une chaîne
Pour connaître le nombre de mots contenu dans une chaîne, vous pouvez utiliser la fonction str_word_count()
<?php
$str = 'La vie est belle';
echo str_word_count($str); // affiche 4
?>
La même fonction peut retourner dans un tableau tous les mots trouvés à l’intérieur de la chaîne. Il faut, pour cela, indiquer comme deuxième paramètre, la valeur numérique 1.
<?php
$str = 'La vie est belle';
$tab = str_word_count($str,1); // mettre le deuxième paramètre à 1
echo $tab[0] // affiche 'la'
?>
La même fonction peut aussi retourner un tableau associatif, où la clé indique la position numérique du mot à l’intérieur de string et la valeur est le mot actuel. Il faut, pour cela, indiquer comme deuxième paramètre, la valeur numérique 2.
<?php
$str = 'La vie est belle';
$tab = str_word_count($str,2); // mettre le deuxième paramètre à 2
echo $tab[3] // affiche 'vie'
?>
Connaître la présence de caractères
Il est parfois utile de vérifier la présence de caractères pour contrôler le format d’une chaîne (présence du point pour l’extension, de l’arobase pour l’email..).
– Trouver la première position
La fonction strpos() trouve la position de la première occurrence d’un caractère dans une chaîne.
<?php
$machaine = "nom-composé";
$pos = strpos($machaine, "-");
if ($pos === false) { // note : trois signes égal
// pas trouvé
}
?>
La fonction strpos() retourne false si elle ne trouve pas. Remarquez l’utilisation de l’opérateur === qui signifie que la comparaison se fera sur la valeur et le type. En PHP le zéro peut prendre la valeur false. Si une valeur est trouvée en position zéro elle ne doit pas être interprétée comme pas trouvée.
– Trouver la dernière position
La fonction strrpos() trouve la position de la dernière occurrence d’un caractère dans une chaîne.
<?php
$machaine = "image.jpg";
$pos = strrpos($machaine, ".");
if ($pos === false) { // note : trois signes égal
// pas trouvé
}
?>
– Trouver un segment unique
La fonction strspn() trouve la longueur du segment initial qui contient uniquement les caractères depuis un masque.
<?php
$machaine = "42 personnes sont venues";
$pos = strspn($machaine, "1234");
echo $pos; /* affiche 2 car "42" est le segment initial de la chaîne
dont les caractères sont contenus dans "1234567890" */
?>
La fonction strcspn() fait l’opération inverse et retourne la longueur de la première sous-chaine ne contenant aucun des caractères spécifiés.
<?php
$machaine = "42 personnes sont venues";
$masque = "'"; // apostrophe
$pos = strcspn($machaine, $masque);
echo $pos; /* affiche 24 ce qui correspond à strlen($machaine)
car pas d'apostrophes trouvés dans la chaine */
?>
Cette fonction est utile pour connaitre la présence de caractère non prévus ou interdits dans une chaîne.