Expressions régulières

Hugo -  
 zanlou -
Bonjour,

J'ai un problème à récupérer du texte entre des tags qui ne sont pas sur la même ligne. Le code que l'on trouve le plus fréquemment sur le web est:

<?php
$file = fopen(" http://page web", "r");
if (!$file) {
echo "<p>Impossible d'ouvrir le fichier distant.\n";
exit;
}
while (!feof($file)) {
$line = fgets($file, 1024);
/* Cela ne fonctionne que site le titre est écrit sur une ligne.*/
if (eregi("<title>(.*)</title>", $line, $out)) {
$title = $out[1];
break;
}
}
fclose($file);
echo $title;
?>

Est-ce quelqu'un sait comment lire sur plusieurs lignes??

Merci

2 réponses

Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 279
 
Salut Hugo,
la seule solution que je connaisse (car j'ai été confronté à ce problème), consiste à remplacer tous les \n par un mot clé, par exemple CoMmEnTcAmArCHe, faire le eregi, puis l'opération inverse !
0
zanlou
 
Salut,

le plus simple est de stoquer les lignes dès que tu as trouvé le tag <TITLE> et d'arrêter une fois que tu as lu le tag </TITLE>

Tu te retrouves avec un certains nombre de lignes ( correspondant au nombre de lignes sur lequel le titre était écrit ) et il ne te reste plus qu'à les concaténer en prenant soin de supprimer le tag <TITLE> de la premiere ligne et le tag </TITLE> de la dernière.

Si tu veux utiliser les expressions régulières, il faudrait faire deux boucles imbriquées, mais cela t'éviteras d'avoir à extraire les tags.

Chaque méthode à son avantage, à toi de choisir.

A+,

Zanlou
0