Page 1 sur 1

Récupérer une page et la réafficher

Posté : 06 oct. 2006, 12:47
par Babeuf
Bonjour !

J'essaie de réaliser une page dans le genre du Debilitron qui récupère le code source d'une page pour le transformer et le réafficher.

(je passe l'url de la page en paramètre GET )

Voici mon code source en l'état actuel des choses :

Code : Tout sélectionner

<?php //Variable de test $ok = 0; //Je récupère l'url cible $fichier = $_GET['url']; $fichier = "http://".$fichier ; // J'ouvre ma page en lecture $fp=@fopen($fichier,"r"); $texte = ""; // si elle existe if($fp) { je la place dans la variable $texte while(!feof($fp)) { $texte .= fgets($fp,1024); } // Et j'indique que la copie à réussi. $ok = 1; } else { echo("Impossible d'ouvrir la page sélectionnée"); }
Mais c'est pour afficher cette page correctement dans mon navigateur que cela pose problème.

En effet, la plupart des images et de liens ne fonctionnent plus.

J'ai bien essayé de bricoler qque chose à grands coups de str_replace mais je n'arrive pas à prendre en compte tous les cas de figure ( liens href avec doubles quotes, simples quotes, pas de quotes, balises src, ), nottament quand les liens se font via du Javascript.

En Clair :

Code : Tout sélectionner

if ($ok = 1) { // C'est à cet emplacement qu'il me manque une routine permettant de réafficher la page correctement ! echo("$texte"); }

Si vous avez une solution pratique et efficace pour mon problème, manifestez vous et je vous donne l'assurance de mon éternelle reconnaissance ! :wink:

Merci !

Posté : 06 oct. 2006, 14:53
par Babeuf
Ca n'a pas l'air de vous inspirer plus que ça apparemment.


Je m'inscris pour pouvoir être averti de vos réponses ! :wink:

Posté : 09 oct. 2006, 14:53
par zarbrok
ecoute moi j'ai la reponse, je la posterais + tard !! :D

Posté : 09 oct. 2006, 20:32
par Babeuf
Merci !

J'ai bricolé un truc qui fonctionne dans la plupart des cas que je posterais aussi des que j'aurais un moment.



En tout cas j'ai hate de voir ta solution !

Posté : 10 oct. 2006, 20:37
par Babeuf
Voila ma routine pour reconstituer la page :
<?

//
// Préparation de la page
//

//Travail de type src 


$regimg = "#src=[^>]+#";
$max = preg_match_all($regimg,$texte,$img);

$i = 0;

while ($i < $max)
{
$tmp = $img[0][$i];
$init = $tmp;

$data = preg_split("#[[:space:]]#",$tmp);
$tmp = $data[0];
$data = preg_split("#<#",$tmp);
$tmp = $data[0];

$tmp = str_replace("src=","",$tmp);
$tmp = str_replace("'","",$tmp);
$tmp = str_replace("\"","",$tmp);
$tmp = str_replace(">","",$tmp);

$image = $tmp;


if (substr($image,0,7) != "http://") { 

if (substr(trim($image),0,1) == "/") $imagenew = $mere.trim($image); else $imagenew = $mere."/".trim($image);

}
else $imagenew = $image ;

$exit = str_replace($image,$imagenew,$init);
$texte = str_replace($init,$exit,$texte);

$i++;
}


// Traitement des href : 

$reglien = "#href=[^>]+#";
$max = preg_match_all($reglien,$texte,$li);

$i=0;

while ($i < $max)
{

$tmp = $li[0][$i];
$init = $tmp;
$data = preg_split("#[[:space:]]#",$tmp);
$tmp = $data[0];
$data = preg_split("#<#",$tmp);
$tmp = $data[0];

$tmp = str_replace("href=","",$tmp);
$tmp = str_replace("'","",$tmp);
$tmp = str_replace("\"","",$tmp);
$tmp = str_replace(">","",$tmp);

$lien = $tmp;

if (substr($lien,0,7) != "http://") { 

if (substr(trim($lien),0,1) == "/") {
$liennew = $mere.trim($lien);
 }else $liennew = $mere."/".trim($lien);

}
else $liennew = $lien ;

$exit = str_replace($lien,$liennew,$init);
$texte = str_replace($init,$exit,$texte);

$i++;
}


// Traitement des url( : 

$regurl = "#url\([^)]+#";


$max = preg_match_all($regurl,$texte,$ur);

$i=0;

while ($i < $max)
{

$tmp = $ur[0][$i];
$init = $tmp;
$tmp = str_replace("url(","",$tmp);
$tmp = str_replace("'","",$tmp);
$tmp = str_replace("\"","",$tmp);


$url = $tmp;

if (substr($url,0,7) != "http://") { 

if (substr(trim($url),0,1) == "/") $urlnew = $mere.trim($url); else $urlnew = $mere."/".trim($url);

}
else $urlnew = $url ;

$exit = str_replace($url,$urlnew,$init);
$texte = str_replace($init,$exit,$texte);

$i++;
}

?>