Значение ячейки PHP Simple HTML DOM

У меня проблема с разбором PHP Simple HTML DOM -lib.

HTML:

<td>
<span>text</span>
actual text i want to pick up
<span>text2</span>
</td>

Я не знаю, как получить «фактический текст, который я хочу подобрать» - часть этого. $node->innertext и $node->plaintext также содержат текст внутри тегов span.

редактировать: я пробовал

$node->innertext // prints the whole thing
$node->plaintext // prints "textactual text i want to pick uptext"
$node->tag //prints td

В руководстве, кажется, нет четкого упоминания для случая, подобного моему.

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


person Kemu79    schedule 28.09.2012    source источник
comment
Пожалуйста, покажите, что вы пробовали, отредактировав свой вопрос.   -  person Axel Isouard    schedule 28.09.2012
comment
простой html dom — это (на мой взгляд, очень) ограниченный, сломанный и несовершенный компонент. Я предполагаю, что то, что вы ищете, даже не просто возможно с помощью простого html dom. Итак, почему вы ожидаете, что эта библиотека сможет делать то, чего вы хотели бы достичь?   -  person hakre    schedule 28.09.2012


Ответы (2)


Вы можете использовать str_get_html следующие

$source = '<td>
<span>text</span>
actual text i want to pick up
<span>text2</span>
</td>';

$dom = str_get_html($source);
var_dump($dom->plaintext);

Выход

text actual text i want to pick up text2
person Baba    schedule 28.09.2012
comment
ОП хочет только actual text i want to pick up - person Tchoupi; 28.09.2012
comment
Да, я пробовал подобный подход, но, как уже упоминалось, он дает слишком много текста. Мне не нужны вещи внутри тегов span. - person Kemu79; 28.09.2012

Хорошо, я понял, как получить доступ к необходимой информации. Пробовал разные комбинации $node->children($x)->innertext, но это не помогло. Этот способ не кажется «правильным», но работает в моем случае.

foreach($node->nodes as $c) {
   if($c->tag == "text")
     $text = $c->innertext;
}
person Kemu79    schedule 29.09.2012