Fonction eregi()

Résolu/Fermé
mali_67 Messages postés 77 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 25 avril 2008 - 26 févr. 2008 à 11:00
mali_67 Messages postés 77 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 25 avril 2008 - 27 févr. 2008 à 09:26
Bonjour,quelq'un pourais corriger mon code afin qu'il soit capable de lire le code source de mon url(j'ai régler ce probleme)
et y trouver le code d'un hyperlien(mon probleme)du type
<a href="http://sejours.fr.sprice.com/searchvacation/list/continent_destination:Asie,pays_destination:Chine" target='\"_blank\"' #1aa1e9;\="" color:="" none;="">la Chine</a>

contenu dans mon url
Bon il n'y a pas de message d'erreur, le probleme est que la fonction eregi ne renvoi pas le code de l'hyperlien que je lui demande, sur mon formulaire, lorsque je lance ma verification, mon url est valide(en vert) et la ligne de code que je cherche ne l'est pas (en rouge)(alors que le code est bien dans le code source de la page)
j'ai fait une serie de test avec des echo pour verifier ce que renvoie eregi, et elle ne renvoi strictement rien
voici mon code
<?php       
if (isset($_POST['Verification']))
{
if($bool=='true')
{
$fp = @fopen(''.$Tab[LibelleLienPartenaire].'',"r"); //lecture du fichier
while (!feof($fp)) { //on parcourt toutes les lignes
  $page .= fgets($fp, 4096); // lecture du contenu de la ligne
}
$code = eregi("<a href=(.*)</a>",$page,$regs);
if($regs[0]==$Tab[CodeLienPartenaire]) //on isole les titre
{
 echo $reg[0];
//echo '<span style="color:green;">'.htmlentities($Tab[CodeLienPartenaire]).'</span>';  
}
else
{
 echo $reg[0];
//echo '<span style="color:red;">'.htmlentities($Tab[CodeLienPartenaire]).'</span>';    
}
fclose($fp);
}
else
{
echo $reg[0];
//echo '<span style="color:red;">'.htmlentities($Tab[CodeLienPartenaire]).'</span>';    
}
}
else
{
echo htmlentities($Tab[CodeLienPartenaire]);    
}
?>

10 réponses

R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
26 févr. 2008 à 12:04
Salut,

Avant de pouvoir t'aider, rappelle-toi que nous n'avons que les infos que tu donnes pour comprendre ton problème.

Ici, tu sors des $Tab[LibelleLienPartenaire] et des $bool sans que tu nous explique ce qu'il contiennent ni que tu nous donnes un exemple d'utilisation qui devrait tourner tel quel.

Pour ne pas jouer aux deveniettes trop longtemps et pour t'aider quand même, voici juste une étude de la ligne de code suivante : $code = eregi("<a href=(.*)</a>",$page,$regs); (on va dire que c'ets ça qui t'intéresse vu que tu en parles dans le sujet de la question, tu vois, c'est pas facile les devinettes ;-).


<?php

$tab_pages = array();
$tab_pages['lien guillemets'] = '<a href="http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu">lien</a>';
$tab_pages['lien apostrophe'] = "<a href='http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu'>lien</a>";
$tab_pages['lien rien'] = '<a href=http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu>lien</a>';
$tab_pages['lien guillemets et tag complexe'] = '<a href="http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu" style="lelien">lien</a>';
$tab_pages['lien apostrophe et tag complexe'] = "<a href='http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu' style=\"lelien\">lien</a>";
$tab_pages['lien rien et tag complexe'] = '<a href=http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu style="lelien">lien</a>';

foreach($tab_pages as $libelle => $page) {
        if (preg_match("#<a\s*href\s*=\s*('[^']*'|\"[^\"]*\"|\S+).*?>.*?</a>#",$page,$regs)) {
                $url = ($regs[1]{0} == "'" or $regs[1]{0} == '"')? substr($regs[1], 1, strlen($regs[1]) - 2) : $url;
                echo "URL : " . $url;
        } else {
                echo "$libelle marche pas";
        }
        echo "<br/>\n";

}

?>




La sortie, ça donne :

URL : http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu<br/>
URL : http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu<br/>
URL : http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu<br/>
URL : http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu<br/>
URL : http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu<br/>
URL : http://www.r4f.org/test/autretest/page.php?arg=1&blabla=tutu<br/>


Donc, peu importe comment les liens sont indiqués, ça marche.

Raph
0
mali_67 Messages postés 77 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 25 avril 2008 4
26 févr. 2008 à 14:26
oui desoler je vais mieu expliquer, le code que j'ai donner ne s'effectue seulement si mon url a etais verifier,
d'ou le $bool='true' si $bool ='false' mon url n'as pas etais trouver donc la verification de son code source ne va etre effectuer
ma page et composer d'un tableau avec plusieur colonne(seulement 1 nous interresse($Tab[CodeLienPartenaire])
j'ai un bouton verification qui lorsque j'appui decu va commencer par verifier si l'url($Tab[LibelleLienPartenaire]) est bien active(je n'ai pas mis ce code car il fonctionne) et apés je renvoi $bool a true pour commencer le parcour du code source qui la ne fonctionne pas
enfin surtou la ligne
$code = eregi("<a href=(.*)</a>",$page,$regs);
if($regs[0]==$Tab[CodeLienPartenaire]) //on isole les caractere

ou $reg[0] est sencé revoyer ma chaine de caracter complete mais se n'est pas la cas

pour mes variable

- $Tab[LibelleLienPartenaire] est du genre http://carnet-de-voyage.sprice.com/index.php/ c'est l'url donc je parcour le code source(elle as préalablement etais verifier avec le $bool='true')

-$Tab[CodeLienPartenaire] est du genre <a href="http://sejours.fr.sprice.com/searchvacation/list/continent_destination:Asie,pays_destination:Chine" target='\"_blank\"' #1aa1e9;\="" color:="" none;="">la Chine</a> c'est le code de l'hyperlien(celui qui doit ce trouver dans l'url)

dit moi si il manque des renseignement
0
mali_67 Messages postés 77 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 25 avril 2008 4
26 févr. 2008 à 14:29
oui en faite la sorti doit me donner
if($regs[0]==$Tab[CodeLienPartenaire])
$reg[0]=<a href="http://sejours.fr.sprice.com/" target='\"_blank\"' #1aa1e9;\="" color:="" none;="">la Chine</a>
$Tab[CodeLienPartenaire]) =<a href="http://sejours.fr.sprice.com/" target='\"_blank\"' #1aa1e9;\="" color:="" none;="">la Chine</a>
0
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
26 févr. 2008 à 14:53
Et donc j'ai répondu à ta question ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mali_67 Messages postés 77 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 25 avril 2008 4
26 févr. 2008 à 15:17
sa devrai plutot me sortir
url : <a href="http://sejours.fr.sprice.com/searchvacation/list/continent_destination:Asie,pays_destination:Chine" target='\"_blank\"' #1aa1e9;\="" color:="" none;="">la Chine</a>
mais j'ai pas tout compris a ton code
0
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
26 févr. 2008 à 15:25
Disons que ce que j'affichen c'est l'URL et non pas le contenu de la variable, mais bon, tu peux remplacer echo "URL : " . $url; par echo$page; et tu as ce que tu veux...
0
mali_67 Messages postés 77 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 25 avril 2008 4
26 févr. 2008 à 15:26
je vien d'essayer sa, mais sa ne fonctionne pas
if (preg_match("/$Tab[CodeLienPartenaire]/i",$page,$regs)!=0)
{
echo '<span style="color:green;">'.htmlentities($Tab[CodeLienPartenaire]).'</span>';	
}
else
{
 
echo '<span style="color:red;">'.htmlentities($Tab[CodeLienPartenaire]).'</span>';	
}
fclose($fp);
0
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
26 févr. 2008 à 15:49
il faut transformer

if (preg_match("/$Tab[CodeLienPartenaire]/i",$page,$regs)!=0)

en

if (preg_match(""#<a\s*href\s*=\s*('[^']*'|\"[^\"]*\"|\S+).*?>.*?<­/a>#", $page, $regs) && $page == $Tab['CodeLienPartenaire'])


Tu recherches l'expression régulière (le premier paramètre de preg_match) dans la chaîne de caractères $page et si c'est bien le bon format d'expression régulière, alors tu testes si c'est égale à $Tab['CodeLienPartenaire'], non ?

Et pourquoi tu utilises des expressions régulières au lieu de strstr ? https://www.php.net/manual/fr/function.strstr.php


Raph
0
mali_67 Messages postés 77 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 25 avril 2008 4
26 févr. 2008 à 15:57
ben je me suis inspiré de cour sur ce site https://www.commentcamarche.net/contents/791-php-les-fichiers
et vu que je suis debutant j'ai fait sa a la debutant lol
mais je ne sait même pas a quoi corresponde $page, et $regs
je vai tester le code que tu vien de me conseiller
0
mali_67 Messages postés 77 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 25 avril 2008 4
27 févr. 2008 à 09:26
Merci pour les reponse probleme resolue avec preg_match
0