Разобрать текст класса span с помощью DOM PHP - PullRequest
2 голосов
/ 11 марта 2011

У меня возникла проблема при попытке анализа текста в классе span с помощью DOM. Вот мой пример кода.

$remote = "http://website.com/";
$doc = new DOMDocument();
@$doc->loadHTMLFile($remote);
$xpath = new DOMXpath($doc);
$node = $xpath->query('//span[@class="user"]');
echo $node;

и это возвращает следующую ошибку -> «Catchable fatal error: объект класса DOMNodeList не может быть преобразован в строку». Я так потерян, мне нужна помощь !!!

Я пытаюсь разобрать имя пользователя между этим тегом span.

<span class="user">bballgod093</span>

Вот полный источник с удаленного сайта.

<div id="randomwinner">
    <div id="rndmLeftCont">
        <h2 id="rndmTitle">Hourly Random <span>Winner</span></h2>
    </div>
    <div id="rndmRightCont">
        <div id="rndmClaimImg">
            <table cellspacing="0" cellpadding="0" width="200">
                <tbody>
                    <tr>
                        <td align="right" valign="middle">
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    <div id="rndmCaimTop">

    <span class="user">bballgod093</span>You've won 1000 SB</div>

    <div id="rndmCaimBottom">
        <a id="rndmCaimBtn" class="btn1 btn2" href="/?cmd=cp-claim-random" rel="nofollow">Claim Bucks</a>
    </div>

    </div>
    <div class="clear"></div>
</div>

1 Ответ

2 голосов
/ 11 марта 2011

Этот звонок

$node = $xpath->query('//span[@class="user"]');

не возвращает строку, но DOMNodeList.

Вы можете использовать этот список как массив (используя $node->length для количества элементов и $node->item(0) для получения первого элемента), чтобы получить DOMNode объекты. Каждый из этих объектов имеет свойство nodeValue, представляющее собой строку.

Так что вы бы сделали что-то вроде

$node = $xpath->query('//span[@class="user"]');
if($node->length != 1) {
    // error?
}

echo $node->item(0)->nodeValue;

Конечно, было бы неплохо изменить имя переменной для $node на более подходящее.

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