Я использую этот код для печати содержимого веб-страницы (исходный код):
<?php
$url='http://cloob.com';
$ch=curl_init();
$timeout=5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
// Get URL content
$lines_string=curl_exec($ch);
// close handle to release resources
curl_close($ch);
var_dump( htmlspecialchars($lines_string));
//echo htmlentities($lines_string);
//var_dump( $lines_string);
?>
Это работает, но когда я изменяю URL на https://google.com
не работает, почему?
Это работало, когда я использую напрямую (когда я не использую htmlentities()
) в обеих ситуациях …
(Я использую http://phpfiddle.org/)
Первое, что нужно сделать, это прочитать документы:
Если входная строка содержит недопустимую кодовую последовательность в данной кодировке, будет возвращена пустая строка, если не установлены флаги ENT_IGNORE или ENT_SUBSTITUTE.
Таким образом, у нас может быть проблема с PHP, разбирающим HTML, или кодировка неправильная, или HTML неправильный.
Когда вы используете правильную кодировку для веб-сайта Google, вы получите желаемый результат:
var_dump( htmlspecialchars($lines_string, ENT_COMPAT, 'ISO-8859-1'));
Других решений пока нет …