Пытаетесь пройти через структуру HTML с использованием PHP? - PullRequest
0 голосов
/ 03 февраля 2011
$p = new DOMDocument();
echo $data;
$static = $p->loadHTML($data);
$static = $static->getElementByTagName("html")->item(0);
$static = $static->getElementByTagName("body")->item(0);
$static = $static->getElementByTagName("table")->item(0);
$static = $static->getElementByTagName("tr")->item(0);
$static = $static->getElementByTagName("td")->item(0);
$static = $static->getElementByTagName("table")->item(0);
$static = $static->getElementByTagName("tr")->item(5);
$static = $static->getElementByTagName("td")->item(1);
$static = $static->getElementByTagName("div")->item(0);
$static = $static->getElementByTagName("table")->item(0);
$static = $static->getElementByTagName("tr")->item(0);
$static = $static->getElementByTagName("td")->item(0);
$static = $static->etElementByTagName("center")->item(0);
echo $static;

Это мой код выше, я не уверен, правильно ли я это делаю, но кажется, что это правильно (я пытаюсь пройтись по структуре, чтобы найти именно ту часть, которая мне нужна).Однако я продолжаю получать эту ошибку:

Неустранимая ошибка: вызов функции-члена getElementByTagName () для необъекта в бла в строке 18

(строка 18 являетсяпервый "getElementByTagName")

Я также получаю следующие ошибки, если что-то связано с ним:

Предупреждение: DOMDocument :: loadHTML () [domdocument.loadhtml]: открытие инесоответствие конечного тега: td и центр в Entity, строка: 83 в строке 17

Предупреждение: DOMDocument :: loadHTML () [domdocument.loadhtml]: несоответствие при открытии и окончании тега: td и center в Entity, строка: 83 в строке 17

Предупреждение: DOMDocument :: loadHTML () [domdocument.loadhtml]: несоответствие открывающего и завершающего тега: td и center в объекте, строка: 87 в строке 17

Предупреждение: DOMDocument :: loadHTML () [domdocument.loadhtml]: неожиданный конечный тег: div в Entity, строка: 91 в строке 17

но да, кто-нибудь может помочь, пожалуйста?

Ответы [ 3 ]

5 голосов
/ 03 февраля 2011

Во-первых, исправьте ваш HTML, чтобы он действовал в соответствии с этими ошибками.Затем выполните обработку DOM.

Вы также можете использовать DOMXpath и выполнить

->evaluate('/body/table/tr/td/table/tr/td/div/table/tr/td/center')

Или вы можете просто сделать ->evaluate('//center') и захватить все элементы center.

после вы получите правильный HTML.Вы также можете присвоить этому элементу center идентификатор.В идеале вы должны никогда не использовать центральный элемент.

3 голосов
/ 08 сентября 2012

Для записи:

Иногда мы не можем исправить искаженные документы.
Мы можем заблокировать эти предупреждения с помощью оператора @ (контроль ошибок).

$static = @$p->loadHTML($data);
3 голосов
/ 20 октября 2011

Вы неправильно набрали имя функции как getElementByTagName.Правильное имя функции - getElementsByTagName.Когда я повторил ваш код с этим исправлением, он работал правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...