[php]problème preg_replace

Résolu/Fermé
chico95 - Modifié par chico95 le 31/08/2010 à 12:07
 chico95 - 31 août 2010 à 13:16
Bonjour,

voila mon problème, je récupère des informations d'un fichier, je les modifie avec un preg_replace, puis je les affiche dans une listeBox, or quand j'affiche ces informations, un espace s'insère devant...

Voila un exemple de ce que contient mon fichier :

<li><a href="http://localhost/test/bo/bo.php">BO</a></li>   
<li><a href="http://localhost/test/bw/bw.php">BW</a></li>


Ce qui est en gras c'est ce que je voudrais extraire puis afficher.
Je fais donc ceci :


while(!feof($fichier)){   

$ligne=fgets($fichier,4096); // On recupere les noms    

if(preg_match('#<+#',$ligne)){ // Si il a une balise html, donc un lien, on affiche   

          $ligne=preg_replace('#<li><a href=\"(.+)\">(.+)</a></li>#i','$2',$ligne); // On enlève les balises devant et derrière le nom du menu        
   
          
 echo '<option value="'.$ligne.'">'.$ligne.'</option>'; // On affiche dans la listebox le nom sans les balises     
}   

}





J'aimerais savoir pourquoi quand j'affiche ce que j'ai extrait il y a un espace, par exemple quand je fais :
echo 'A'.$ligne; il m'affiche A BO et non pas ABO


Merci !
a+


A voir également:

2 réponses

Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 31/08/2010 à 13:19
Ce n'est pas un espace c'est un problement saut de ligne. Preg_replace remplace le "<li><a href="http://localhost/test/bo/bo.php"></a></li>" de ta chaine de caractère par une chaine vide mais il laisse le saut de ligne.

Si tu veux JUSTE récupérer l'intereur des balises li utilise preg_match_all :
$ligne='<li><a href="http://localhost/test/bo/bo.php">BO</a></li>      
<li><a href="http://localhost/test/bw/bw.php">BW</a></li>';   
preg_match_all('#<li><a href=\"(.+)\">(.+)</a></li>#i',$ligne,$matches);   
print_r($matches);// les résultats commencent à la case 1 du tableau   
echo '<BR>';   
foreach($matches[2] as $match)   
{   
   echo("A".$match."<BR>\n");   
}
0
merci bien, c'est impec !
0