Bonjour,
J'ai la fonction suivante qui me permet de tester les adresses url (récupérer sur php.net et améliorer).
J'ai un fichier texte qui contient une liste de toutes les adresses url que je veux tester.
Le problème est que certaines de ces adresses contiennent des $FILE comme par exemple:
http://www.monsite.com/help/$FILE/test.doc?open
Ma fonction de test me retourne donc false pour une adresse de ce type alors que c'est une adresse valide.
En revanche si je fais un $url = 'http://www.monsite.com/help/$FILE/test.doc?open' et que je lance ma fonction, cela me retourne true.
Pour résumé:
Voila je sais c'est tordu. Merci a tout ceux et celles qui prendront le temps de m'aider.
PS: ce test est pour un programme dans le cadre d'un stage et je dois tester des adresses url de mon entreprise. (je sais y'a des boulets qui code leurs adresses url avec des $ mais je n'y suis pour rien).
Modifié par ashesheart (05 Jul 2007 - 11:37)
J'ai la fonction suivante qui me permet de tester les adresses url (récupérer sur php.net et améliorer).
function url_exists($url){
$a_url = parse_url($url);
if (!isset($a_url['port'])) $a_url['port'] = 80;
$errno = 0;
$errstr = '';
$timeout = 30;
if(isset($a_url['host']) && $a_url['host']!=gethostbyname($a_url['host'])){
$fid = fsockopen($a_url['host'], $a_url['port'], $errno, $errstr, $timeout);
if (empty($fid)) return false;
$page = isset($a_url['path'])?str_replace("__","",$a_url['path']):'';
$page .= isset($a_url['query'])?'?'.$a_url['query']:'';
fputs($fid, 'HEAD '.$page.' HTTP/1.0'."\r\n".'Host: '.$a_url['host']."\r\n\r\n");
$head = fread($fid, 4096);
fclose($fid);
return preg_match('#^HTTP/.*\s+[200|301|302]+\s#i', $head);
}else{
return false;
}
}
J'ai un fichier texte qui contient une liste de toutes les adresses url que je veux tester.
Le problème est que certaines de ces adresses contiennent des $FILE comme par exemple:
http://www.monsite.com/help/$FILE/test.doc?open
Ma fonction de test me retourne donc false pour une adresse de ce type alors que c'est une adresse valide.
En revanche si je fais un $url = 'http://www.monsite.com/help/$FILE/test.doc?open' et que je lance ma fonction, cela me retourne true.
Pour résumé:
//Premiere version, Lecture du fichier
$url = fgets($fp); //$fp correspond a la ligne.
$ret = url_exists($url);
//ici $ret est égal a false.
//Deuxieme version, test en sauvegardant directement dans une variable une adresse test.
$url = 'http://www.monsite.com/help/$FILE/test.doc?open';
$ret = url_exists($url);
//ici $ret est égal a true.
Voila je sais c'est tordu. Merci a tout ceux et celles qui prendront le temps de m'aider.
PS: ce test est pour un programme dans le cadre d'un stage et je dois tester des adresses url de mon entreprise. (je sais y'a des boulets qui code leurs adresses url avec des $ mais je n'y suis pour rien).
Modifié par ashesheart (05 Jul 2007 - 11:37)