Не удается декодировать HTML-объекты в заголовке - PullRequest
2 голосов
/ 27 мая 2011

У меня проблемы с декодированием объектов в заголовке из этого видео на 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 возвращает всехорошо, за исключением возвратов вопросительных знаков, где ‪ изначально в названии.

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Я не знаю, предоставляет ли PHP какую-либо функцию для этого, однако вы можете использовать preg_replace следующим образом:

$string = preg_replace('/&#x([0-9a-f]+);/ei', 'chr(hexdec("$1"))', $string);
0 голосов
/ 27 мая 2011

Попробуйте сделать это для правильного определения кодировки:

$doc = new DOMDocument();
@$doc->loadHTML('<?xml encoding="UTF-8">' . $html);

$nodes = $doc->getElementsByTagName('title');
$title = $nodes->item(0)->nodeValue;

echo $title;
...