我需要使用Simple HTML Dom PHP库提取After div中的文本。我已经尝试过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 ;
}
答案 0 :(得分:0)
欢迎!
似乎您想使用DOMDocument
方法来解析HTML。如果是这种情况,您可以实例化一个新对象,可能类似于:
$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"
}
答案 1 :(得分:0)
看起来您需要使用Simple_html_dom
更改html内容。
我为您找到了一个返回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内容并删除了first和last元素,因此保留了所需的纯文本。
答案 2 :(得分:0)
我建议您为此使用JQuery,这非常简单 您可以输入
<script>
$(".data").append("whatever you want");
</script>
说明: jQuery中的$是全局选择元素 你把.class-name insinde $(“”) 然后使用方法appen() 添加元素