Expressions régulières

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

  • Votes
  • Date
  • Date décroissante
  1. Webmaster
    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 !
    1. 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