PHP DOM, найти текст в определенном div - PullRequest
1 голос
/ 02 июля 2010

В настоящее время я работаю разработчиком трекера для игры без использования регулярных выражений.Я столкнулся с препятствием на пути разбора html в определенных частях.

Что я пытаюсь проанализировать:

<td class="alt1" id="td_post_139718"> 
<!-- message, attachments, sig --> 
        <!-- icon and title --> 
        <div class="smallfont"> 
            <img class="inlineimg" src="images/icons/icon1.gif" alt="Default" border="0" /> 
            <strong>Re: TERA's E3 2010 Coverage</strong> 
        </div> 

Мой код:

$titleArray = array();
        foreach($idArray as $id) {
            $title = $dom->getElementById('td_post_'.$id);
            $smallFont = $title->getElementsByTagName("div");
            echo $smallFont->nodeValue;
        }

Этоприводит к:

Notice: Undefined property: DOMNodeList::$nodeValue in C:\wamp\www\crawler\crawler.php on line 71

Notice: Undefined property: DOMNodeList::$nodeValue in C:\wamp\www\crawler\crawler.php on line 71

Notice: Undefined property: DOMNodeList::$nodeValue in C:\wamp\www\crawler\crawler.php on line 71

Я пытаюсь найти текст внутри a, который находится в динамическом.

Я пробовал все виды комбинаций, чтобы попытаться заставить его работать, но я 'мы смогли достичь этого.

Ответы [ 2 ]

4 голосов
/ 02 июля 2010

::getElementsByTagName дает список узлов.Вы должны перебрать его, чтобы получить отдельные <div> s.Пример:

foreach ($title->getElementsByTagName("div") as $smallFont)) {
    echo htmlspecialchars($smallFont->nodeValue), "<br />;
}

Вы также можете использовать свойство textContent.Смотрите, например, это обсуждение .

3 голосов
/ 02 июля 2010

getElementsByTagName возвращает DOMNodeList , а не один узел. Вам нужно будет получить доступ к отдельному узлу из списка, прежде чем пытаться получить доступ к nodeValue:

echo $smallFont->item(0)->nodeValue;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...