Expression réguliére qui bug?
Résolu
Kygo
-
Kygo -
Kygo -
Bonjour, je joue depuis un bout de temps avec une expression régulière qui devrait me retourner toutes les balises meta des sites web passées en paramètre.
La voici:
Résultat pour https://www.facebook.com/
Pourtant dans le code source de la page d'accueil du site en question je vois des :
Et pas de bol, c'est justement celles ci qui m'intéressent.
Je ne m'y connais pas trop en expressions réguliéres mais si je ne me trompe pas celle la devrait retourner tout ce qui commence par <meta et qui se termine par />.
Je vous remercie d'avance pour vos réponses.
La voici:
preg_match_all('/<meta[^>]+[\/>$]*/i', $html, $matches);
Résultat pour https://www.facebook.com/
Array
(
[0] => Array
(
[0] => <meta charset="utf-8" />
[1] => <meta http-equiv="refresh" content="0; URL=/unsupportedbrowser?_fb_noscript=1" />
[2] => <meta name="referrer" content="default" id="meta_referrer" />
[3] => <meta name="robots" content="noodp,noydir" />
[4] => <meta http-equiv="X-Frame-Options" content="DENY" />
)
)
Pourtant dans le code source de la page d'accueil du site en question je vois des :
<meta property="og:site_name" content="Facebook" />
<meta property="og:url" content="https://www.facebook.com/" />
<meta property="og:image" content="https://www.facebook.com/images/fb_icon_325x325.png" />
<meta property="og:locale" content="fr_FR" />
Et pas de bol, c'est justement celles ci qui m'intéressent.
Je ne m'y connais pas trop en expressions réguliéres mais si je ne me trompe pas celle la devrait retourner tout ce qui commence par <meta et qui se termine par />.
Je vous remercie d'avance pour vos réponses.
A voir également:
- Expression réguliére qui bug?
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Avoir du ping expression ✓ - Forum Réseau
- Iptv bug forum ✓ - Forum TV & Vidéo
- Bug chromecast - Guide
- Bug localisation snap ✓ - Forum Snapchat
2 réponses
Pour ceux qui ont le même problème, il s'agit que mon script se présente sur facebook en tant que "navigateur utilisé par php" et non pas comme "navigateur utilisé par un humain" donc les headers ne sont pas les mêmes que sur nos navigateurs de tous les jours et facebook affiche non pas son code source normal que l'on voit nous mêmes, mais un code source d'une page qui dit que le navigateur n'est pas supporté par facebook. donc forcément dedans il n'y avait pas mes tant recherchés og:image...
Il faut refaire le script avec curl en envoyant les bons headers, ainsi on obtiendra le bon code source.
Il faut refaire le script avec curl en envoyant les bons headers, ainsi on obtiendra le bon code source.
Voici un exemple fonctionnel:
$url = "http://www.facebook.com"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_FAILONERROR, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 15); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $html = curl_exec($curl); curl_close($curl); preg_match_all('/<meta[^>]+[\/>$]*/i', $html, $matches); print_r($matches);