Extraire du texte entre 2 balises avec php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Extraire du texte entre 2 balises avec php

Re: Extraire du texte entre 2 balises avec php

par Sébastien » 18 mars 2013, 11:35

Bonjour Sadeq,
Merci de ta réponse...
Cela fonctionne ! :o)

Bonjour Perine,
Je ne connais pas les "DOMDocument", et je suis allé voir sur le lien... pffff mazette ! Pas une mince affaire ...

Merci quand même ;o)

DJ

Re: Extraire du texte entre 2 balises avec php

par Perine » 18 mars 2013, 10:48

Les expressions régulières sont des outils inadéquats pour ça.
http://php.net/DOMDocument

Re: Extraire du texte entre 2 balises avec php

par sadeq » 17 mars 2013, 23:08

Oui comme ça :
preg_match_all('#<a href="(.+)">(.+)</a>([^<]*)#i', $source, $liens);

Re: Extraire du texte entre 2 balises avec php

par Sébastien » 17 mars 2013, 11:32

Bonjour Sadeq,
Merci de ta réponse.

Je me demandais si il était possible d'inclure ce nouvel RegExp à l'ancien.
Et ainsi avoir avec seulement un RegExp toutes les infos nécessaires.

Avec quelque chose comme cela :
preg_match_all('#<a href="(.+)">(.+)</a>(.+)#i', $source, $liens);
Mais cela semble ne pas fonctionner !?
Je n'arrive pas à récupérer :
$liens[4][$nb];
qui correspond au dernier " (.+) "...
Je n'arrive pas à l'inclure dans ma boucle " foreach " !?

Merci
DJ

Re: Extraire du texte entre 2 balises avec php

par sadeq » 16 mars 2013, 22:05

Bonjour, essaye cette RegExp:
preg_match_all('#</a>([^<]*)#i', $source, $liens);
C'est à dire : on sélectionne le contenu situé après </a> jusqu'à rencontrer un < qui annonce la présence d'une autre balise (ou rien comme l'atteste l'étoile *)

Extraire du texte entre 2 balises avec php

par Sébastien » 16 mars 2013, 19:10

Bonjour à vous tous,
J'ai un petit soucis.

J'ai récupéré ce code sur Internet (http://www.commentcamarche.net/forum/af ... s-avec-php)
<?php
$source = '<a href="/siteinfo/page1.html">Coco</a>
<a href="/siteinfo/page2.html">Riri</a>
<a href="/siteinfo/page3.html">Dada</a>';

preg_match_all('#<a href="(.+)">(.+)</a>#i', $source, $liens);

$nb = 0;
foreach($liens[0] as $complet) {
    $url = $liens[1][$nb];
    $texte = $liens[2][$nb];

    echo 'Lien complet : '.htmlspecialchars($complet).'<br />';
    echo 'URL : '.$url.'<br />';
    echo 'Texte : '.$texte.'<br />';
    echo '<hr />';

    $nb++;
}
?>

Il marche à la perfection...
Mais j'aimerai en plus pouvoir récupérer ce qu'il y a entre les balises liens... Je m'explique.

Imaginons le texte "source" ainsi :
<a href="/siteinfo/page1.html">Coco</a>... Récupérer tout ici...
<a href="/siteinfo/page2.html">Riri</a>... Et ici...
<a href="/siteinfo/page3.html">Dada</a>... Et là...
Comment récupérer tous ce qui se trouve entre les balises "<a>" !?
cela : "... Récupérer tout ici..."
et cela :"... Et ici..."
Et encore :"... Et là..."

Merci de votre aide.
DJ