Problème expression régulière

Signaler
Messages postés
105
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
16 octobre 2005
-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
Bonjour, j'ai un gros problème avec mon expression régulière permettant d'extraire les liens d'une page. En fait, dès qu'il y a que un lien a extraire il fonctionne à merveille, mais quand il y en a plusieurs, il affiche les < et le lien. Voici ma source :

<?php
$txt='Google.fr
[ PHP Codes sources]';
$txt = preg_replace('[(.+) (.+)]', '$1', $txt);

echo $txt
?>
Please Help !!!

11 réponses

Messages postés
105
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
16 octobre 2005

oups, j'ai oublié de rajouter des trucs, voici mon code :

<?php
$txt='Google.fr
[ PHP Codes sources]';
$txt = preg_replace('![(.+) (.+)]!', '$1', $txt);

echo $txt
?>
Mais il a autant de problème, il ne peut extraire que 1 lien, c'est pas beaucoup.
PLEASE HELP

>>>> Tony 4758 <<<<
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,



tente ça :



preg_replace('`[(.+?) ([^>].+?)]`sim', '$1', $txt);

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
105
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
16 octobre 2005

Merci sa marche super bien, mé jé un autre problème. Le script récupère tout le reste de la page (les balises html, font...) comment faire pour qu'il prenne juste les balises ?

>>>> Tony 4758 <<<<
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
$txt=strip_tags(preg_replace('`[(.+?) ([^>].+?)]`sim', '$1', $txt));



au pif...



<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
105
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
16 octobre 2005

sa ne marche pas, il reprend toute la page, voici mon code entier :

<?php
$txt= '<html> fff [Google.fr>
[ff.php PHP Codes sources] [caca.html ff]</html>';
$txt =strip_tags(preg_replace('`[(.+?) ([^>].+?)]`sim', '$1', $txt));


echo $txt
?>

>>>> Tony 4758 <<<<
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
<?php

$texte= '<html> fff Google.fr
[ff.php PHP Codes sources] [caca.html ff]</html>';



$tableau_adresses =array();



preg_match_all('`[(.+?) (.+?)]`sim',$texte,$tableau=array());



$count_tab=count($tableau[0]);



$r=0;



//----------------------------------------------

//REMPLACE CHAQUE OCCURENCE PAR LE CODE COLORIE

//----------------------------------------------

while($r<$count_tab)

{

$code_html_lien=$tableau[0][$r];




$tableau_adresses[]=preg_replace('`[(.+?) (.+?)]`sim','$1',$code_html_lien);



$r++;

}

?>



bon j'ai testé ça marche :-) le tableau $tableau_adresses contient toutes les adresses :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
heu oublie le commentaire "REMPLACE CHAQUE OCCURENCE PAR LE CODE COLORIE" mdr

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
105
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
16 octobre 2005

j'ai mit sa :
<?php
$texte= '<html> fff [Google.fr>
[ff.php PHP Codes sources] [caca.html ff]</html>';


$tableau_adresses =array();


preg_match_all('`[(.+?) (.+?)]`sim',$texte,$tableau=array());

$count_tab=count($tableau[0]);


$r=0;



while($r<$count_tab)
{
$code_html_lien=$tableau[0][$r];


$tableau_adresses[]=preg_replace('`[(.+?) (.+?)]`sim','$1',$code_html_lien);


$r++;
echo $tableau_adresses;
}


?>
Et sa me met "Array" plusieurs fois et aucunes adresses http.

>>>> Tony 4758 <<<<
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
faut pas mettre ça là, faut lire le contenu du tableau...



<?php

$texte= '<html> fff [Google.fr]>
[ff.php PHP Codes sources] [caca.html ff]</html>';
$tableau_adresses =array();



preg_match_all('`[(.+?) (.+?)]`sim',$texte,$tableau=array());

$count_tab=count($tableau[0]);



$r=0;




while($r<$count_tab)
{
$code_html_lien=$tableau[0][$r];




$tableau_adresses[]=preg_replace('`[(.+?) (.+?)]`sim','$1',$code_html_lien);



$r++;
}



while(list($adresse)=each($tableau_adresses))

{

echo $adresse,'
';?>

}

?>




...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
105
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
16 octobre 2005

Ce code la me met 0 1 2 3 quand je l'éxecute.

>>>> Tony 4758 <<<<
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
remplace while(list($adresse)=each($tableau_adresses))

{

echo $adresse,'
';?>

}



par



while(list(,$adresse)=each($tableau_adresses))

{

echo $adresse,'
';?>

}

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>