疯狂的getElementsByTagName不适用于PHP 5.3.3

时间:2012-02-24 12:40:15

标签: php encoding domdocument

我有一个非常简单的代码:

$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($data);
libxml_clear_errors();
$dom->preserveWhiteSpace = false;
foreach($dom->getElementsByTagName('img') as $img) {
    // do something here
}

变量$ data包含来自外部URL的HTML。好吧,如果我使用我的本地网络服务器使用PHP 5.3.6测试此代码,它可以工作并返回该页面中的所有img标签,但是使用PHP 5.3.3在另一台服务器上运行的相同代码不起作用!它不会从SAME $数据值返回所有img标记...它只返回前13个图像。

我怀疑这与编码有关,可能是$ data中的某些字符有不良编码或者什么,但我不知道如何解决它。 PHP 5.3.3上有一个与此相关的已知错误?

1 个答案:

答案 0 :(得分:-1)

我建议你查看php docs页面上的评论, 看起来有一些关于DOMDocument用法的有用建议: http://de.php.net/manual/en/domdocument.getelementsbytagname.php

在你要求(最终)stackoverflow上的已知错误之前, 您可能希望在https://bugs.php.net/

上查找

编辑:

我想我发现了与这种行为有关的错误:
https://bugs.php.net/bug.php?id=60762

即使它被标记为5.4.0 RC 5我也无法复制 提到的行为。
可能是HTML数据的问题(正如您所提到的)。