Bonjour, j'ai une chaine de caractère qui se présente sous la forme origine:[sousOrigine], origines et sousOrigine étant l'origine et la sous origine d'un fiche qui varient d'une fiche à l'autre donc le nombre de caractère n'est pas fixe.
Comment puis-je récupérer la chaine de caractère correspondant à l'origine et la chaine de caractère correspondant à la sous origine ?

Merci pour votre aide !
Modérateur
Et l'eau,

le problème est que tu ne donnes pas vraiment le contexte et un exemple.... Ton énoncé n'est pas très clair. Ceci dit, tu as 2 manières.

1. la méthode barbare étant d'utiliser les expressions rationnelles. mouais bof.....
2. la méthode élégante étant d'utiliser:
- explode()
- current()
- end()

ou
- explode()
- list()
exemple:

$chaine = "origine:sous origine";
list($origine, $sous_origine) = explode(":", $chaine);
echo $origine;
echo $sous_origine;


Bien que je me délaisse du php (beurk, la syntaxe), il me semble qu'en php 7.x, tu puisses utiliser ce genre de syntaxe :

[$origine, $sous_origine] = explode(":", $chaine);

Modifié par niuxe (23 Jan 2020 - 00:48)
Bonsoir, merci beaucoup pour votre réponse qui est ce dont j'avais besoin. Cependant lorsque je fais ce code:
 foreach($parsee as $result){
            if($id==$result['fnc']['id']){
                $origineSousorigine=$result['fnc']['id'];
            }
        }
        list($origine, $sousOrigine)=explode(";",$origineSousorigine);
        echo $origine;
        echo $sousOrigine;

cela me met l'erreur Undefined offset : 1 pour la ligne avec list... je ne comprends pas cette erreur...Elle apparait également si je fais [$origine, $sous_origine] = explode(":", $chaine);
Modifié par romane_pm (23 Jan 2020 - 00:50)
Modérateur
romane_pm a écrit :

cela me met l'erreur Undefined offset : 1 pour la ligne avec list... je ne comprends pas cette erreur...Elle apparait également si je fais [$origine, $sous_origine] = explode(":", $chaine);


Cela veut dire qu'il split bien la chaine mais que l'une des variable est indéfinie ou qu'il y a plus de ou moins de 2 élements. Cela veut dire aussi que le motif 'origin:sous origine' n'est pas intègre. Dans ce cas, il va falloir utliser count() afin de savoir si lors du split, explode retourne 2 éléments.

Quelle est la valeur de $origineSousorigine ?

<<<EDIT
je viens de penser que array_slice() peut être utile
EDIT;
Modifié par niuxe (23 Jan 2020 - 01:22)
Je ne pense pas que array_slice() peut marcher, c'est un string que je veux découper...

le motif origine:sousorigine ne doit pas etre bon en effet étant donné que mon string est sous la forme origine:[sousOrigine]
par exemple si je fais
        foreach($parsee as $result){
            if($id==$result['fnc']['id']){
                $origineSousorigine=$result['fnc']['origine'];
                echo $origineSousorigine;
            }
        }

le echo renvoie Commercial: Smiley communication
(sans le espace entre le : et le crochet mais sinon cela met un smylet)
Modifié par romane_pm (23 Jan 2020 - 10:03)