Récupérer une chaine de caractères entourée de 2 caractères précis et différents
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