par
Patriboom » 07 janv. 2016, 19:04
À ces conditions, tu peux te permettre de redéfinir complètement ta fonction in_multi_array ou à détruire
Je crois - parce qu'un tableau créé par PHP est obligatoirement de taille finie - que tu n'auras pas de problème de cycle infini avec tes fonctions actuelles (sauf in_multi_array qui sera à réécrire ou détruire)
Tandis que tu y es, tu pourrais te mettre des indices faciles à travailler, ça produirait un tableau comme
Code : Tout sélectionner
Array
(
[0] => array('niv' => 0, 'adrs' => 'http://www.jscourses.com', 'orig' => '')
[1] => array('niv' => 1, 'adrs' => 'http://www.jscourses.com', 'orig' => 'http://www.jscourses.com/')
[2] => array('niv' => 1, 'adrs' => 'http://www.jscourses.com', 'orig' => 'http://www.jscourses.com/services')
[3] => array('niv' => 2, 'adrs' => 'http://www.jscourses.com/services', 'orig' => 'http://www.jscourses.com/tarifs')
[4] => array('niv' => 2, 'adrs' => 'http://www.jscourses.com/services', 'orig' => 'http://www.jscourses.com/reserver')
[5] => array('niv' => 0, 'adrs' => 'http://www.jscourses.com/gare-de-lyon'. 'orig' => '')
[6] => array('niv' => 0, 'adrs' => 'http://www.jscourses.com/gare-de-lyon/taxi-moto-gare-de-lyon','orig' => '')
Voyons voir si ça marche:
Code : Tout sélectionner
function crawl($url, &$urls, $limite, $prof=0, $orig='') //un changement apporté ici
{
$code_brute = crawlcurl($url);
$doc = new DOMDocument();
$doc->loadHTML($code_brute);
$balise_a = $doc->getElementsByTagName('a');
foreach($balise_a as $balise)
{
$href = $balise->getAttribute('href');
// if( !in_multi_array($href, $urls) && strstr($href, racine($url)) && !strstr($href, 'pdf') )
// Nouveau centre de traitement
if (is_array($href)) {
foreach ($href as $ind => $val ) { crawl($val, $urls, $limite, ($prof+1), $orig); }
} else {
$urls[] = array('niv' => $niv, 'adrs' =>$href, 'orig' =>$orig);
}
}
return $urls;
}
À ces conditions, tu peux te permettre de redéfinir complètement ta fonction in_multi_array ou à détruire
Je crois - parce qu'un tableau créé par PHP est obligatoirement de taille finie - que tu n'auras pas de problème de cycle infini avec tes fonctions actuelles (sauf in_multi_array qui sera à réécrire ou détruire)
Tandis que tu y es, tu pourrais te mettre des indices faciles à travailler, ça produirait un tableau comme
[code]
Array
(
[0] => array('niv' => 0, 'adrs' => 'http://www.jscourses.com', 'orig' => '')
[1] => array('niv' => 1, 'adrs' => 'http://www.jscourses.com', 'orig' => 'http://www.jscourses.com/')
[2] => array('niv' => 1, 'adrs' => 'http://www.jscourses.com', 'orig' => 'http://www.jscourses.com/services')
[3] => array('niv' => 2, 'adrs' => 'http://www.jscourses.com/services', 'orig' => 'http://www.jscourses.com/tarifs')
[4] => array('niv' => 2, 'adrs' => 'http://www.jscourses.com/services', 'orig' => 'http://www.jscourses.com/reserver')
[5] => array('niv' => 0, 'adrs' => 'http://www.jscourses.com/gare-de-lyon'. 'orig' => '')
[6] => array('niv' => 0, 'adrs' => 'http://www.jscourses.com/gare-de-lyon/taxi-moto-gare-de-lyon','orig' => '')
[/code]
Voyons voir si ça marche:
[code]
function crawl($url, &$urls, $limite, $prof=0, $orig='') //un changement apporté ici
{
$code_brute = crawlcurl($url);
$doc = new DOMDocument();
$doc->loadHTML($code_brute);
$balise_a = $doc->getElementsByTagName('a');
foreach($balise_a as $balise)
{
$href = $balise->getAttribute('href');
// if( !in_multi_array($href, $urls) && strstr($href, racine($url)) && !strstr($href, 'pdf') )
// Nouveau centre de traitement
if (is_array($href)) {
foreach ($href as $ind => $val ) { crawl($val, $urls, $limite, ($prof+1), $orig); }
} else {
$urls[] = array('niv' => $niv, 'adrs' =>$href, 'orig' =>$orig);
}
}
return $urls;
}[/code]