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

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

marion17
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

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

Message le Sam Déc 30, 2006 2:29

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:


Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Sam Déc 30, 2006 11:27

Il y a une fonction pour extraire toutes les balises d'un type donné et les placer dans un tableau. Voir section HTML du manuel.


david96
WRInaute accro
WRInaute accro
 
Messages: 1408
Inscription: Dim Aoû 28, 2005 21:56

Message le Sam Déc 30, 2006 11:28

Code: Tout sélectionner
<?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

marion17
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

Message le Sam Déc 30, 2006 12:07

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 :)

damd76
WRInaute discret
WRInaute discret
 
Messages: 51
Inscription: Mar Fév 14, 2006 22:24

Message le Sam Déc 30, 2006 12:21

Bonjour,

La fonction preg_match_all devrait faire ton bonheur.

marion17
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

Message le Sam Déc 30, 2006 14:35

damd76 a écrit: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


Tilt
WRInaute passionné
WRInaute passionné
 
Messages: 818
Inscription: Sam Mar 26, 2005 11:48

Message le Sam Déc 30, 2006 15:46

Salut,

Peut-être avec :

Code: Tout sélectionner
$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: Tout sélectionner
$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: Tout sélectionner
$a=preg_match_all("`<span class=\"salut\">([^<]+)</span>`i",$variable_a_parser,$out)?$out:false;

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

marion17
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

Message le Sam Déc 30, 2006 18:40

Tilt a écrit:Salut,
Code: Tout sélectionner
$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 :)


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités