Comment récupérer du texte entre des balises html ?

Eléphant du PHP | 130 Messages

07 avr. 2007, 10:25

Salut,

Je n'arrive pas à récupérer du texte entre les balises <font> dans un fichier. Le fichier est de la forme suivante.

<font color='#00FF56'>Tartenpion</font><font color='#54A2EC'>Toto</font>

J'ai essayé comme ceci :
if(file_exists($fichier)){
$lire=fopen($fichier, "r");
while(!feof($lire)){
$ligne=fgets($lire, 1024);
preg_match_all('#<font[^>]*>.*</font>#i',$ligne,$pseudos);
foreach($pseudos as $val){
$var1=$val[0];
$var2=$val[1];
$var3=$val[2];
}
}
}
Pourtant lorsque je fais des echo, les variables var1, var2, et var3 s'affichent bien. Mais lorsque je continue le script, celui ci ne m'efface pas les variables que je veux effacer. La suite du script est bonne il n'y a pas d'erreur. Donc l'erreur provient du bout de code que j'expose ici. :cry:

Je sais qu'il existe fgetss, mais cela ne convient pas pour ce que je veux faire.

Eléphant du PHP | 170 Messages

07 avr. 2007, 10:33

Tiens essaies ça :
<?php
$ton_fichier='pouet.html';
$fichier=file_get_contents($ton_fichier);
preg_match_all('`<font[^>]*>([^<]+)</font>`i',$fichier,$out);

echo '<pre>',print_r($out[1],true),'</pre>';

?>
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Eléphant du PHP | 130 Messages

10 avr. 2007, 10:56

Bon ça ne fonctionne toujours pas. Avec aucune des deux expressions. Ou bien c'est moi qui ne sait pas récupérer les variables comme il faut. Ce qui est possible car je ne suis pas un super pro de php. Voici comment je récupère mes variables :
<?php
if(file_exists($fichier)){  
$lire=fopen($fichier, "r");  
while(!feof($lire)){  
$ligne=fgets($lire, 1024);  
preg_match_all('#<font[^>]*>.*</font>#i',$ligne,$out);  
foreach($out as $val){  
$var1=$val[0];  
$var2=$val[1];  
$var3=$val[2];  
  }  
 }  
} 

// ou 

if(file_exists($fichier)){  
$ligne=file_get_contents($fichier);  
preg_match_all('`<font[^>]*>([^<]+)</font>`i',$ligne,$out); 
$nombre=count($out[0]); 
for($j=0; $j<$nombre; $j++){ 
$tableau[].=$out[0][$j]; 
 } 
$var1=$tableau[0]; 
$var2=$tableau[1]; 
$var3=$tableau[2]; 
}
?>
Ce que je comprend pas c'est que dans un cas comme dans l'autre si je fais des echos, cela m'affiche les bonnes valeurs
Jack
Annie
Philippe

Et si je remplace les variables par les mots ça marche

$var1="Jack";
$var2="Annie";
$var3="Philippe";

Donc il y a bien un probleme avec mon code plus haut. Merci pour vôtre aide.