【问题标题】:PHP DOM - Problem loading YouTube Embed CodePHP DOM - 加载 YouTube 嵌入代码时出现问题
【发布时间】:2010-08-18 09:18:02
【问题描述】:

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

$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 网址,但不确定解决此错误的最佳方法。因此,任何建议都将受到欢迎。

【问题讨论】:

    标签: php url dom youtube


    【解决方案1】:

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

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

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

    以上内容也适用于loadXML。

    【讨论】:

    • 酷...将 & 符号更改为 &amp 已解决问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 2012-06-14
    • 2011-07-05
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    相关资源
    最近更新 更多