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

Résolu/Fermé
Nath - 14 avril 2011 à 17:28
 Nath - 15 avril 2011 à 11:48
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

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

Nath
0
Luxerails Messages postés 159 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 24 décembre 2012 41
14 avril 2011 à 20:04
Cette chaine se trouve où ? Sur une autre page, sur la meme page... ?
0
ktm620enduro Messages postés 293 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 12 mars 2013 38
Modifié par ktm620enduro le 14/04/2011 à 21:51
$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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ktm620enduro Messages postés 293 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 12 mars 2013 38
15 avril 2011 à 11:12
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
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
ktm620enduro Messages postés 293 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 12 mars 2013 38
Modifié par ktm620enduro le 15/04/2011 à 11:28
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
Merci beaucoup ca a l'aire de marcher faut que je test un peu plus dans la journée.
Merci beaucoup :)
0
ktm620enduro Messages postés 293 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 12 mars 2013 38
15 avril 2011 à 11:42
résolu ?
0
resolu pour la reccup de données, ilme reste a faire un petite fonction pour l'affichage de l'image, merci encore ;)
0