Parfois il est utile de récupérer une chaine de caractères qui se situe entre 2 caractères différents. C'est notamment le cas quand on utilise des sous-groupes dans un champ "select" pour hiérarchiser les choix de réponse à un formulaire.


Imaginons une chaine de caracères :

$chaine = "élément1_élément2-élément3";

"élément1" est séparé de "élément2" par un underscore (_) et "élément2" est séparé de "élément3" par un tiret (-).

Si on veut récupérer l'élément1, il suffit de récupérer la chaine de caractères qui se situe avant l'underscore (_) à l'aide de la fonction strstr :

$chaine = "élément1_élément2-élément3";
$élément1=strstr($chaine,'_',true);

Si on veut récupérer l'élément3, il suffit de récupérer la chaine de caractères qui se situe après le tiret (-) à l'aide de la fonction strstr :

$chaine = "élément1_élément2-élément3";
$élément3=strstr($chaine,'-');

Mais si on veut récupérer l'élément2, comment faire ? Ce petit bout de code vous y aidera :

$marqueurDebutLien = "_";
$debutLien = strpos( $chaine, $marqueurDebutLien ) + strlen( $marqueurDebutLien );
$marqueurFinLien = "-";            
$finLien = strpos( $chaine, $marqueurFinLien );
$élément2 = substr( $chaine, $debutLien, $finLien - $debutLien );

La fonction strstr est détaillée ici : Petites fonctions utiles en PHP

Retour à l'accueil