Простой HTML Dom - найти текст после div - PullRequest
1 голос
/ 05 мая 2019

Мне нужно извлечь текст в After divs, используя PHP-библиотеку Simple HTML Dom. Я попытался next_sibling (), чтобы получить текст, но он не работает.

<div class="one">one<div>
<div class="data">mydata</div>
get this text
<div class="two">two</div>

Мой код:

$res = $div->find('div[class="data]',0);
if($res->plaintext == 'mydata'){
    echo $res->next_sibling()->plaintext  ;
}

Ответы [ 3 ]

0 голосов
/ 05 мая 2019

Похоже, вам нужно изменить HTML-контент с помощью Simple_html_dom.

Я нашел для вас одно решение, которое возвращает get this text.

$res = $html->find('div[class="data"]',0);
    if($res->plaintext == 'mydata'){
        $res->parent()->first_child()->outertext ='';
        $res->parent()->last_child()->outertext ='';
        echo $res->parent()->innertext;
    }

после того, как я найду div с class='data', я изменил html-содержимое и удалил первый и последний элемент, поэтомунужный вам простой текст остается.

0 голосов
/ 05 мая 2019

Я рекомендую вам использовать JQuery, для этого очень просто набрать

<script>
$(".data").append("whatever you want");
</script>

ОБЪЯСНЕНИЕ: $ in jquery является глобальным выбором для выбора элемента, который вы поместили .class-name insinde $ ("")затем используйте метод appen (), чтобы добавить elemnts

0 голосов
/ 05 мая 2019

Добро пожаловать!

Кажется, вы хотите проанализировать HTML, используя DOMDocument метод.Если это так, вы можете создать новый объект, например:

$dir = '<div class="one">one<div>
<div class="data">mydata</div>
get this text
<div class="two">two</div>';

$dom = new DOMDocument();
$dom->loadHTML($dir);
$xpath = new DOMXpath($dom);

$res = $xpath->document->documentElement->textContent;

$textNodes = explode(PHP_EOL, $res);
foreach ($textNodes as $key => $text) {
    if ($text == 'mydata') {
        echo $textNodes[$key + 1];
        break;
    }
}

Затем вы можете делать все остальное, что вы хотите сделать с документом.

Вывод:

get this text

Документ

Если вы var_dump($xpath->document->documentElement);, вы можете узнать, как вы можете использовать атрибуты объекта documentElement:

twoobject(DOMElement)#3 (18) {
  ["tagName"]=>
  string(4) "html"
  ["schemaTypeInfo"]=>
  NULL
  ["nodeName"]=>
  string(4) "html"
  ["nodeValue"]=>
  string(20) "one
mydata
two
three"
  ["nodeType"]=>
  int(1)
  ["parentNode"]=>
  string(22) "(object value omitted)"
  ["childNodes"]=>
  string(22) "(object value omitted)"
  ["firstChild"]=>
  string(22) "(object value omitted)"
  ["lastChild"]=>
  string(22) "(object value omitted)"
  ["previousSibling"]=>
  string(22) "(object value omitted)"
  ["nextSibling"]=>
  NULL
  ["attributes"]=>
  string(22) "(object value omitted)"
  ["ownerDocument"]=>
  string(22) "(object value omitted)"
  ["namespaceURI"]=>
  NULL
  ["prefix"]=>
  string(0) ""
  ["localName"]=>
  string(4) "html"
  ["baseURI"]=>
  NULL
  ["textContent"]=>
  string(20) "one
mydata
two
three"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...