8791 sujets

Développement web côté serveur, CMS

Bonsoir,
je cherche un moyen pour copier le contenu d'une partie du code source d'un site externe
la solution la mieux adaptée que j'ai pu trouver est la fonction 'preg_match'
je débute avec preg_match et je n'obtiens rien en sortie




$chemin_fichier = "http://www.un-site.com/index.php";
$fp=@fopen($chemin_fichier,"r");

$contenu = "";

if($fp)
{
   while(!feof($fp))
   {
   $contenu .= fgets($fp,1024);
   }
   if(preg_match('#(<body)(.*)(<\/body>)#i',$contenu, $matches))
   {
   echo "OK !";
   }

}
else
{
echo "Impossible d'ouvrir la page $chemin_fichier";
}




Merci d'avance pour votre aide !
Modifié par smartywou (28 Jun 2011 - 09:10)
Je ne suis pas un expert de la question, mais normalement les regExp sont marqués ainsi:

/pattern/param



Et pas avec des "#" (mais ça marche peut-être aussi)

Et je ne vois pas trop bien à quoi sert ton flag $matches passé à la fonction (quel est le contenu de cette variable ?)
Modifié par Vaxilart (28 Jun 2011 - 01:39)
Salut,

Il est préférable de charger les données entièrement à l'aide de la fonction file_get_contents.

$chemin_fichier='http://www.un-site.com/index.php';
if(($contenu=@file_get_contents($chemin_fichier,false))!==false){
	if(@preg_match('%<body[^>]*>(.+?)</body>%si', $contenu, $matches)){
		echo 'Ok';
		$html=$matches[1]; // Résultat dans la variable $html
	}else
		echo 'Body non trouvé ou vide';
}else
	echo 'Impossible d\'ouvrir la page '.$chemin_fichier;

Modifié par Eric2A (28 Jun 2011 - 02:13)
Merci beaucoup pour votre aide !

je suis très intéressé par les preg_match,
si vous connaissez des sites qui proposent des exos détaillés, je suis preneur
Vaxilart a écrit :
Je ne suis pas un expert de la question, mais normalement les regExp sont marqués ainsi:

/pattern/param



Et pas avec des &quot;#&quot; (mais ça marche peut-être aussi)


a écrit :

When using the PCRE functions, it is required that the pattern is enclosed by delimiters. A delimiter can be any non-alphanumeric, non-backslash, non-whitespace character.

Often used delimiters are forward slashes (/), hash signs (#) and tildes (~).


http://php.net/manual/en/regexp.reference.delimiters.php