Saluté...
Je bosse sur un système de moteur de recherche en ce moemtnet j'essaye d'optimiser tout ça avec des regex... bon l'idée est de pouvoir récupérer tous les liens d'une page depuis son code source ...
le problème est qu'il existe pluiseurs types de liens
ceux commencant
par http
par ./
par ../
par dossier/
par /dossier/
ou ceux étant simplement un nom de fichier
genre <a href="index.php">accueil</a>
ensuite on a les variables passées en get à prendre en compte ...donc tout ce qui siut le nom de fichier et qui commence par un ?
ok ...deja tout ça c'est pas mal ... mais bien sur il faut éviter de prendre les javascript tout en récupérant les liens qui peuvent y être
genre la dedans
<a href="javascript:window.open('pagepopup.php','newsletter_exemple', 'status=yes,resizable=yes,scrollbars=yes,width=610,height=500'); void(0); " onMouseover="document.newsimg.src='http://medias.lemonde.fr/mmpub/img/ep/news-5.jpg';"><b>Titres du jour</b></a> : Du lundi au vendredi, les titres de l'actualité développés sur Le Monde.fr.<br><br>
il faut récupérer pagepopup.php
bon ...j'ai bossé sur une regex qui est pas mal mais qui ne fonctionne pas encore au top :(
j'aurai besoin d'un coup de main pour la paufiner ... pour mes tests j'utilise le code source de la page "lemonde.fr" qui comporte plein de types de liens ou ue page de tests à moi...
voici ma regex
// recuperation de la source
$fichier = fopen($_GET['url'], 'r', false);
$src = '';
while ($str=fread($fichier, 16))
{
$src .= $str;
}
fclose($fichier);
preg_match_all('%(("|\')(http|./|../|/|[a-z0-9]+/)(.+?)(\.html|\.php|\.php3|\.php4|\.php5|\.htm|\/|\.asp)("|\'))|(("|\')([a-z0-9])+(\.html|\.php|\.php3|\.php4|\.php5|\.htm|\/|\.asp)(\?)(.+?)+("|\'))%im', $fichier, $lnk2, PREG_OFFSET_CAPTURE);
echo '<textarea rows="20" cols="50" style="width:700px;">';
print_r($lnk2);
echo '</textarea>';
bon je suis pas un pro des regex mais j'y travaille ;)
ma regex me sort pour l'instant des liens mais avec trop d'options
genre
Array
(
[0] => Array
(
[0] => Array
(
[0] => "/web/recherche_resultats/1,13-0,1-0,0.html"
[1] => 4393
)
[1] => Array
(
[0] => "/web/inscription_newsletter/1,27-0,1-0,0.html"
[1] => 6121
)
[2] => Array
(
[0] => "http://www.lemonde.fr/web/sequence/0,2-3208,1-0,0.html"
[1] => 6944
)
[3] => Array
(
[0] => "http://medias.lemonde.fr/mmpub/img/tit/nav-une.gif" alt="Home" border="0" height="27"></a></td><td id="m_ann_1129"><a href="http://www.lemonde.fr/web/sequence/0,2-3208,1-0,0.html"
[1] => 7111
)
[4] => Array
(
[0] => "http://medias.lemonde.fr/mmpub/img/tit/nav-act.gif" alt="Actualités" border="0" height="27"></a></td><td id="m_ann_1130"><a href="http://www.lemonde.fr/web/sequence/0,2-3232,1-0,0.html"
[1] => 7409
)
etc etc...
d'ou le pb... j'aimerai récupérer juste les liens :(
à vot bon coeur !
mercii !
@+