Fonction eregi()
Résolu
mali_67
Messages postés
77
Date d'inscription
Statut
Membre
Dernière intervention
-
mali_67 Messages postés 77 Date d'inscription Statut Membre Dernière intervention -
mali_67 Messages postés 77 Date d'inscription Statut Membre Dernière intervention -
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
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
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]); } ?>
A voir également:
- Fonction eregi()
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
10 réponses
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 ;-).
La sortie, ça donne :
Donc, peu importe comment les liens sont indiqués, ça marche.
Raph
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
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
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
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
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>
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>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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...
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);
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
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