Php récupérer un morceau d'une chaine

Résolu
Nath -  
 Nath -
Bonjour,

voila j'ai une chaine "XXXXX[AAA] XXXX"
je voudrais récupérer juste le AAA mais je ne sais pas comment m'y prendre.

Avez-vous une solution?
Merci beaucoup

6 réponses

  1. Nath
     
    j'ai oubliée
    je veux récupérer le AAA mais aussi faire disparaître le [AAA] de la chaine

    Nath
    0
  2. Luxerails Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   41
     
    Cette chaine se trouve où ? Sur une autre page, sur la meme page... ?
    0
  3. ktm620enduro Messages postés 377 Statut Membre 38
     
    $r est le résultat et $k ta chaine d'entrée

    if (preg_match('#^[^\[]+\[([^\]]+)#',$k,$r))  
    echo $r[1]; // affiche ce qui est entre les [ ]


    $r=preg_replace('#\[[^\]]+\]#','',$k);  
    echo $r; // effectue le remplacement et affiche le résultat

    Abandonne ce qui te trouble au profit de ce qui apaise ton coeur.
    0
  4. Nath
     
    ca ne fontionne pas chez moi.
    voila le code que j'ai fais hier mais je suis sûre qu'il y'a moyen de le simplifier.
    car je n'ai pas réussi a récupéré ce qu'il y'a entre les crochet.
    A savoir que ma chaîne provient déjà d'une autre chaîne divisé.
    $chaine=explode('/',$donnees['clubs']);
    foreach($chaine as $cle => $element)
    {
    $cr =  str_replace("[BEL]", '<img src="images/pays/bel.jpg" title="Belgique"> ',$chaine[$cle]);
    $cr =  str_replace("[FR]", '<img src="images/pays/fr.jpg" title="France"> ',$cr); //1lignes par pays
    $cr =  str_replace("[SEN]", '<img src="images/pays/sen.jpg" title="Sénégal"> ',$cr);
    $cr =  str_replace("[EAU]", '<img src="images/pays/eau.jpg" title="Émirats arabes unis"> ',$cr);
    .
    .
    .
    echo " - ".$cr."<br>";
    


    Voila en gros, je récupère entre crochet le nom du pays pour y mettre à la place une image drapeau. Sur chaque ligne il n'y a forcement qu'un seul pays. Mais la facon dont j'ai codé pour chaque drapeau existant il y'aura une ligne, et d'autres drapeau s'ajouteront avec le temps mais il peu y'en avoir pas mal. Je suis sûre qu'il y'a plus simple mais je maîtrise pas encore correctement php, si quelqu'un peut m'apporter un morceau de solution ;)

    //---------------------------------------------------- idée
    sinon j'ai pensé faire un fonction avec tableau de ce genre
    	function Drapeau($nation)
    	{
    	$pays[0][0] = "BEL";
    	$pays[0][1] = '<img src="images/pays/bel.jpg" title="Belgique">';
    	$pays[1][0] = "FR";
    	$pays[1][1] = '<img src="images/pays/fr.jpg" title="France">';
          //etc..................................... pour chaque pays
           $i = 0;
    	while($i <x) : //x = nb de pays
    	  if ($pays[$i][0] == $nation) {
    	      return $pays[$i][1];
    	      $i=200; //plus que x }
    	  else {$i++;}	
    	endwhile; 					
    	}?>
    

    Mais pour cette solution il faut que je recupere le nom entre crochet et finalement elle est peut etre encore plus compliquer que la premiere...
    SVP aidez moi :)
    Merci
    Nath
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ktm620enduro Messages postés 377 Statut Membre 38
     
    ma solution a été testée avant de te l'envoyer... chez moi elle fonctionne, tu peux me dire de quelle nature sont les caracteres avant les corchets , tes fameux XXX
    0
  7. Nath
     
    XXX c'est BEL, FR les premiere lettre du pays en fait
    [BEL] se trouve en debut de chaine.
    voila ce que je reccuper de ma BDD

    [FR]villes (dates)/[BEL]ville (date)/etc...

    je sépare dans un premier temps la chaines en plusieurs jusque la pas de problème.
    chaque morceau de chaîne correspond à "[PAYS]villes (dates)"
    0
    1. ktm620enduro Messages postés 377 Statut Membre 38
       
      tiens, teste ce code chez moi il fonctionne... : ou $text est ta chaine "[FR]villes (dates)/[BEL]ville (date)/etc... " et $result[1] est le résultat
      if (preg_match_all('#\[([^\]]+)\]([^\(]+)\(([^\)]+)\)#',$text,$result)) 
      print_r($result[1]);
      0
    2. Nath
       
      Merci beaucoup ca a l'aire de marcher faut que je test un peu plus dans la journée.
      Merci beaucoup :)
      0
    3. ktm620enduro Messages postés 377 Statut Membre 38
       
      résolu ?
      0
    4. Nath
       
      resolu pour la reccup de données, ilme reste a faire un petite fonction pour l'affichage de l'image, merci encore ;)
      0