PHP DOM - 加载YouTube嵌入代码时出现问题

时间:2010-08-18 09:18:02

标签: php url dom youtube

我正在尝试执行以下操作:

$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

我已将原因缩小到YouTube网址,但我不确定解决此错误的最佳方法。所以任何建议都会受到欢迎。

1 个答案:

答案 0 :(得分:2)

网址包含&符号,当不用于声明实体时,应将其编码为&amp;。解析器假定&autoload将启动新的权限,但它永远不会以分号结束。

要使用HTML,请考虑使用loadHTML()加载片段;并禁用该部分的错误:

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

以上内容也适用于loadXML