Demande d'aide pour petit script d'extraction de chaine PHP.

WRInaute occasionnel
Bonjour a vous

voila, j'aimerais isoler dans une variable chaine php de texte (du code html en fait) tous les :

<span class="salut">IL peut y avoir n'importe quoi entre ces balises</span>

et les listés ensuite (donc avec un tableau je présume)...

je pense que dit comme ça ca peu etre costaux pour trouver la solution, j'en ai conscience... mais ça me permetrais de resoudre mon problême ou je buche depuis 3 jours...

Merci pour toutes aides et contributions de votre part :oops:
 
WRInaute passionné
Code:
<?php
$a="<span class=\"salut\">IL peut y avoir n'importe quoi entre ces balises</span>";
$ote=preg_replace("!<span class=\"salut\">!is","",$a);
$tab=explode("</span>",$ote);
foreach($tab AS $val)
{
	echo $val."<br />\n";
}
?>
ça doit le faire je pense ! :-D
 
WRInaute occasionnel
woww, merci david96 !

J'ai tester ton superbe code, et ça m'enleve donc les balises <span> avec succes, mais j'iamerais que ca me liste QUE le contenue des balises <span class="salut">

<?php
$a='<span class="salut">IL peut y avoir n\'importe quoi entre ces balises</span>dsdsd<span class="salut">breko</span>
<span class="salut">breko666</span>
<br><p>salut a tous !
Je mange un avocat.</p>';
$ote=preg_replace('!<span class="salut">!is','',$a);
$tab=explode("</span>",$ote);
foreach($tab AS $val)
{
echo $val."<br />\n";
}
?>

donc que ça me liste :

IL peut y avoir n'importe quoi entre ces balises
breko
breko666

On chauffe en tous cas, merci de cette avancée :)
 
WRInaute occasionnel
damd76 a dit:
Bonjour,

La fonction preg_match_all devrait faire ton bonheur.

merci

je suis en train de m'aider de ce site : http://www.expreg.com/pregmatchall.php

mais j'ai du mal a trouver la bonne syntax

j'essaie ça :

<?php
$chaine= file_get_contents('monfichier.htm');

$motif='`\<span class="salut">([^[]+)\</span>`';

preg_match_all($motif,$chaine,$out);

$count=count($out[0]);

for($i=0;$i<$count;$i++)
{


echo $out[0][$i],'<br/>';
}

et ça ne marche que quand il y a UNE balise span, car quand il y en a plusieur, il me capture tous ce qui a entre les 2, ne s'arrete qu'a la derniere </span> du fichier html...

merci d'avance
 
WRInaute impliqué
Salut,

Peut-être avec :

Code:
$a=preg_match_all("`<span class=\"salut\">(.+)</span>`i",$variable_a_parser,$out)?$out:false;

echo"<pre>";print_r($a);echo"</pre>";

Sinon avec :

Code:
$a=preg_match_all("`<span class=\"salut\">(.+)</span>`Ui",$variable_a_parser,$out)?$out:false;

echo"<pre>";print_r($a);echo"</pre>";

Ca marche comme ça ?
Est-ce qu'il y a des balises dans tes span ?
Sinon c'est mieux avec:

Code:
$a=preg_match_all("`<span class=\"salut\">([^<]+)</span>`i",$variable_a_parser,$out)?$out:false;

echo"<pre>";print_r($a);echo"</pre>";
 
WRInaute occasionnel
Tilt a dit:
Salut,
Code:
$a=preg_match_all("`<span class="salut">([^<]+)</span>`i",$variable_a_parser,$out)?$out:false;

echo"<pre>";print_r($a);echo"</pre>";

Merci

je n'ai pas reussi a faire 100% ce que je voulais, mais ton petit symbole ([^<]+) m'a beaucoup aidé, ça marche très bien :)
 
Discussions similaires
Haut