2010-08-18 57 views
1

我试图做到以下几点:PHP 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网址,但我不确定解决此错误的最佳方法。所以任何建议都会受到欢迎。

回答

2

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

要使用HTML,请考虑使用loadHTML()加载片段;和禁用错误行为的一部分:

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

以上将与loadXML工作了。

+0

很酷...将&符号更改为&amp;并解决了问题。谢谢。 – diggersworld 2010-08-18 09:35:14