Récupérer la meta content charset et la meta refresh

WRInaute occasionnel
Bonjour,

Comment récupérer le bon charset et la redirection meta refresh pour des sites ou il n'y a pas de charset dans le header et ou curl est insuffisant pour la redirection

Pour récupérer le charset avec curl, je fais ceci

Code:
$charset = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);

    // Extraire juste le charset et pas le text/html..
	if($charset){
	$temp = explode("charset=",$charset);
	if($temp[1])
	$charset = $temp[1];
	else
	$charset = "";
	}

si maintenant il ne me retourne pas un charset, j'ai un else vide..., si tel est le cas, j'aimerais récupérer le charset dans le meta content et je ne sais pas comment faire, avec preg_match et file_get_contents (je suppose, mais j'ai pas trouvé d'exemple..)


Pour la redirection, 301 et autre, je fais ceci

Code:
$lastUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 
echo "<strong>Original:</strong> $url <br><strong>Final:</strong> $lastUrl";

Tout fonctionne parfaitement sauf que... ça prend pas en compte les redirections meta refresh. Donc pour ce cas également, comment récupérer l'url indiqué dans le meta refresh ? avez vous un exemple, certainement avec preg_match et file_get_contents ?

J'ai découvert ces deux problèmes dans mon script en essayant d'extraire les infos pour ce site: h*tp://www.allo.ch qui n'a pas de chasert en header et qui a un meta refresh qui renvoi sur cette page
h*tp://www.allo.ch/phpbb2/index.php

D'avance merci
Yule
 
WRInaute accro
Semi HS: tu as pensé à la soluce en scrapant avec PhantomJS/CasperJS/SlimerJS au lieu de PHP ?
Exemple mon screenshoter en PhantomJS n'a eu absolument aucun problème à suivre le meta refresh: -http://goo.gl/7wjLyX

NB: Scrapy supporte aussi les redirections meta refresh.
 
WRInaute occasionnel
spout a dit:
Semi HS: tu as pensé à la soluce en scrapant avec PhantomJS/CasperJS/SlimerJS au lieu de PHP ?
Exemple mon screenshoter en PhantomJS n'a eu absolument aucun problème à suivre le meta refresh: -http://goo.gl/7wjLyX

NB: Scrapy supporte aussi les redirections meta refresh.

Sympa pour le tuyau mais comme je suis déjà limite dans mes connaissances en prog, me lancer dans un autre language c'est ma mort rire

J'ai trouvé pour la meta refresh
Code:
preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]*URL[\s]*=[\s]*[\"\']?([^\"\']*?)[\"\']?>'i", file_get_contents($url), $matches); 
$refresh = $matches[1];

Me reste à trouver pour la meta content charset
 
Discussions similaires
Haut