PHP DOM - проблема с загрузкой кода YouTube для встраивания - PullRequest
1 голос
/ 18 августа 2010

Я пытаюсь сделать следующее:

$string = "<object width=\"425\" height=\"350\">
               <param name=\"movie\" value=\"http://www.youtube.com/v/1OtdDqF5rnI&autoplay=0\"></param>
               <param name=\"wmode\" value=\"transparent\"></param>
               <embed src=\"http://www.youtube.com/v/1OtdDqF5rnI&autoplay=0\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"425\" height=\"350\"></embed>
           </object>";

$doc = new DOMDocument();
$doc->loadXML($string);

Когда я загружаю строку, я получаю следующие ошибки:

[phpBB Debug] PHP Notice: in file /mnt/FS-2/Critical/Media/Private/Website/Online/blitz1up.com/application/controllers/articles.php on line 303: DOMDocument::loadXML() [domdocument.loadxml]: EntityRef: expecting ';' in Entity, line: 2
[phpBB Debug] PHP Notice: in file /mnt/FS-2/Critical/Media/Private/Website/Online/blitz1up.com/application/controllers/articles.php on line 303: DOMDocument::loadXML() [domdocument.loadxml]: EntityRef: expecting ';' in Entity, line: 4

Я сократил причину до YouTubeURL-адреса, но я не уверен, что лучший способ устранить эту ошибку.Поэтому любые предложения будут приветствоваться.

1 Ответ

2 голосов
/ 18 августа 2010

URL-адреса содержат амперсанды, которые должны быть закодированы как &amp;, если они не используются для объявления сущностей. Анализатор предполагает, что &autoload запустит новое разрешение, но никогда не завершается точкой с запятой.

Для работы с HTML рассмотрите возможность загрузки фрагмента с loadHTML(); и отключить ошибки для этой части:

libxml_use_internal_errors(TRUE);
$doc = new DOMDocument();
$doc->loadHTML($string);
libxml_clear_errors();
echo $doc->saveHTML();

Вышеуказанное будет работать и с loadXML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...