Page 1 sur 1

recuperation des liens contenu dans une table MySQL

Posté : 04 mai 2006, 10:15
par BaLiSTiK
Bonjour, je souhaite votre aide à propos d'un code source que l'on m'a passé pour une page que je dois faire. (jai déja posté sur le forum pour un autre soucis qui a été reglé, merci ^^).
La fonction permet de recuperer des liens se trouvant dans une table MySQl
(récupere ce qui y'a entre <a href..> et </a>.
le code de la fonction :

le code de la fonction
function getHrefLinks($content) {
        $motif='`<a href="[^>]+">[^<]+</a>`';
        preg_match_all($motif,$content,$out);
        $motif='`href="[^>]+"`';
        $out3 = array();
        foreach ($out[0] as $value) {
                preg_match_all($motif,$value,$out2);
                if (count($out2)>0) {
                        $thisString = $out2[0][0];
                        $thisString = str_replace("\"", "", $thisString);
                        $thisString = str_replace("href=", "", $thisString);
                        $thisString2 = split (" ", $thisString);
                        $thisString = $thisString2[0];
                        if (substr($thisString, 0,strlen("http://"))!="http://") {
                                $urlParsed = parse_url($_SERVER["PHP_SELF"]);
                                $path_parts = pathinfo($urlParsed["path"]);
                                $thisString = "http://".$_SERVER["HTTP_HOST"].$path_parts["dirname"].$thisString;
                        }
						$out3[] = $thisString;
                }
        }
        return $out3;
}
ensuite pour afficher :
while($tab=mysql_fetch_array($req)){
	$urlInContent = getHrefLinks($tab['CONTENT']);
	if ( isset($tab['CONTENT']) && $tab['CONTENT'] != "" )
		print_r ($urlInContent).'<br>';
}
et on a comme résultat sur ma page :
Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( [0] => http://bacasable1.argosdev2.net//delia- ... cle_id-44/ [1] =>
http://bacasable1.argosdev2.net//delia- ... cle_id-65/ [2] =>
http://bacasable1.argosdev2.net//delia- ... le_id-374/
[3] =>
http://bacasable1.argosdev2.net//delia- ... le_id-376/ ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( [0] =>

http://www.recensement.insee.fr/RP99/rp99/
page_accueil.user_choix_aut?nivgeo=C&theme=ALL&typeprod=ALL&choix_reg=&codgeo=78158&choix_saisi=Le-Chesnay&lang=FR&valider=valider

[1] =>
http://www.insee.fr/fr/recensement/nouv ... alites.htm )
Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( )
etc...

Donc ce que je désire, c est ne pas afficher déja les Array(), car ils ne retourne rien et puis lorsqu'une URL est trouvé, ne garder que l URL au lieu de {
Array ( [0] => http://bacasable1.argosdev2.net//delia- ... cle_id-44/
[1] => http://bacasable1.argosdev2.net//delia- ... cle_id-65/
[2] => http://bacasable1.argosdev2.net//delia- ... le_id-374/
[3] => http://bacasable1.argosdev2.net//delia- ... le_id-376/ )}

merci d'avance.
:D

Posté : 04 mai 2006, 10:19
par mere-teresa
Tu sais ce qu'est un Array() ?

Posté : 04 mai 2006, 10:27
par BaLiSTiK
un tableau crée avec la fonction array()...

Posté : 04 mai 2006, 10:45
par BaLiSTiK
j ai trouvé comment enlever les Array() :), en fait suite a la remarque de mere-teresa j ai juste mis en commentaire $out3 = array(); et ça a marché :)
en faisant un compteur je devrais pouvoir recuperer les URL affiché normalment?
avec explode c'est pas possible je me suis renseigné auprès d'un collegue...

Posté : 04 mai 2006, 10:47
par mere-teresa
C'est le print_r() qui t'affiche ces Array() je pense :)

Posté : 04 mai 2006, 10:59
par BaLiSTiK
avec un echo ou un print, ça n'affiche seulement que Array sans rien d'autre. Avec le print_r ça m'affiche le contenu du tableau.
ma page
tout ce que j'ai a faire c est recuperer les URL du tableau...
for( $i = 0; $i < count ( $out3[i] ); $i++)
{ 
	$urlList2[$i] = eregi_replace("[i]", "", $urlInContent[$i])." ";
}
echo $out[i];
ça peut marcher avec un truc de ce genre?

Posté : 04 mai 2006, 11:02
par mere-teresa
Ton idée est bonne, et je te conseille d'aller voir du côté de foreach() facile à appréhender quand on débute.


Posté : 04 mai 2006, 11:53
par BaLiSTiK
j ai essayé comme ça :
$client  =& new HTTP_Client();
$checker =& new HTTP_Client_LinkChecker();
$client->attach($checker);

/*-- Test des URLs de CONTENT --*/
for( $i = 0; $i < count ( $urlInContent ); $i++)
{ 
	$urlList2[$i] = eregi_replace("//", "/",$urlInContent[$i])." ";
}
foreach ($urlList2 as $url2) {
    $client->head($url2);
	}
echo '<br><b>Liste de CONTENT :</b><br>';
while( list($key2, $value2) = each($checker->_urls) )
{
	echo "<b>Site :</b> $key2 - <b>Statut :</b> $value2<br>";
}
mais c est pas encore ça...
mais avec un code source quasi identique j arrive a afficher la liste des URL (sauf que ça vient d'une autre table et la je n'avais pas de tableau)

Posté : 04 mai 2006, 13:56
par BaLiSTiK
bon bah mon truc ça marche pas..je sais pas trop comment faire la :s