У меня проблемы с декодированием объектов в заголовке из этого видео на YouTube:
http://www.youtube.com/watch?v=p7NMsywVQhY
Вот мой код:
$url = 'http://www.youtube.com/watch?v=p7NMsywVQhY'; $html = @file_get_contents($url); $doc = new DOMDocument(); @$doc->loadHTML($html); $nodes = $doc->getElementsByTagName('title'); $title = $nodes->item(0)->nodeValue; //decode the '‪' in the title $title = html_entity_decode($title,ENT_QUOTES,'UTF-8'); //does not seem to have any effect //decode the utf data $title = utf8_decode($title);
$ title возвращает всехорошо, за исключением возвратов вопросительных знаков, где ‪ изначально в названии.
‪
Спасибо.
Я не знаю, предоставляет ли PHP какую-либо функцию для этого, однако вы можете использовать preg_replace следующим образом:
preg_replace
$string = preg_replace('/&#x([0-9a-f]+);/ei', 'chr(hexdec("$1"))', $string);
Попробуйте сделать это для правильного определения кодировки:
$doc = new DOMDocument(); @$doc->loadHTML('<?xml encoding="UTF-8">' . $html); $nodes = $doc->getElementsByTagName('title'); $title = $nodes->item(0)->nodeValue; echo $title;