Ошибка кодировки символов! - PullRequest
0 голосов
/ 10 июля 2010

Я пытаюсь получить содержимое этого URL: http://www.chromeball.com,, но кодировка символов не подходит.

У меня есть этот код:

$url = 'http://www.chromeball.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);


$dom = new DOMDocument();
$dom->loadHTML($data);
$xpath = new DOMXPath($dom);  
$nodes = $xpath->query('//text() | //@alt | //@title | /html/head/meta[@name="description"] | /html/head/meta[@name="keywords"]');
foreach($nodes as $node) {
  $textNodeContent .= " ".$node->nodeValue;
}

$enc = mb_detect_encoding($textNodeContent,'iso-8859-2,iso-8859-1,utf-8');
print  iconv($enc,'utf-8//TRANSLIT',$textNodeContent);

Но это не работает. Кодировка символов неверна. Как я могу конвертировать $ textNodeContent в utf-8? Благодарю.

Ответы [ 2 ]

0 голосов
/ 10 июля 2010

Инициализировать DOM следующим образом:

$dom->loadHTML('<?xml encoding="UTF-8">' . $data);
0 голосов
/ 10 июля 2010

Из комментариев на странице mb_detect_encoding видно, что эта функция не особенно надежна.Chrigu (см. Сообщение от 29 марта 2005 г. 03:32) предлагает поместить UTF-8 в качестве первой кодировки символов в списке:

$enc = mb_detect_encoding($textNodeContent,'utf-8,iso-8859-2,iso-8859-1');

Я пробовал это, и теперь он показывает содержаниекак UTF-8.Тем не менее, я только что попробовал это с содержимым ISO-8859-1, и он обнаруживает это как UTF-8 тоже ...

...