Схожу с ума getElementsByTagName не работает на PHP 5.3.3 - PullRequest
1 голос
/ 24 февраля 2012

У меня есть очень простой код, подобный этому:

$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 содержит HTML из внешнего URL.Хорошо, если я тестирую этот код, используя мой локальный веб-сервер, используя PHP 5.3.6, он работает и возвращает ВСЕ теги img на этой странице, но тот же код работает на другом сервере с PHP 5.3.3.Он не возвращает все теги img из значения SAME $ data ... он возвращает только первые 13 изображений.

Я подозреваю, что это связано с кодировкой, возможно, некоторые символы в $ dataплохая кодировка или что-то в этом роде, но я не знаю, как ее решить.В PHP 5.3.3 есть известная ошибка, связанная с этим?

1 Ответ

0 голосов
/ 24 февраля 2012

Я бы посоветовал вам ознакомиться с комментариями на странице документации php, похоже, есть несколько полезных советов по использованию DOMDocument: http://de.php.net/manual/en/domdocument.getelementsbytagname.php

И прежде чем вы спросите (в конце концов) об известных ошибках в stackoverflow, возможно, вы захотите посмотреть его на https://bugs.php.net/

Edit:

Мне кажется, я нашел ошибку, связанную с этим поведением:
https://bugs.php.net/bug.php?id=60762

Несмотря на то, что он помечен 5.4.0 RC 5, я не мог воспроизвести упомянутое поведение.
Возможно, проблема с данными HTML (как вы упомянули).

...