使用simplehtmldom查找内部内容

时间:2014-07-10 20:32:51

标签: php html simple-html-dom

可以simplehtmldom用于查找内容(非属性)等于$_POST值的DIV吗?

在使用DIV修改网页之前,我需要检查内容为John doe的内容FWRITE是否已经存在 - 与之对比的值将以simplehtmldom值提供给$_POST。这些都没有进入/通过数据库,如果我错过了在simplehtmldom doc中解决这个问题的事情,那么事先抱歉,我只是没有看到它。

假设:$_POST['data'] = "John Doe";且当前页面有:

<div id="aaa"> John Doe </div>
<div id="bbb"> Jane Doe </div>
<div id="ccc"> Mike Doe</div>

以下内容是否可以找到内容为DIV的{​​{1}}?

"John Doe"

2 个答案:

答案 0 :(得分:1)

是的,它在关于在标签内获取文本的文档中。您需要使用->innertext魔法属性。只需使用stripos()检查该特定值是否存在。

示例:

$found = false;
foreach($html->find('div') as $div) {
    if(stripos($div->innertext, $_POST['data']) !== false) {
        $found = true;
    }
}

if($found) {
    // john doe exists
} else {
    // he doesn't exist in each div
}

我个人的偏好:

$dom = new DOMDocument();
$dom->loadHTMLFile('your_url');
$xpath = new DOMXpath($dom);
if($xpath->query('//div[contains(., "'.$_POST['data'].'")]')->length > 0) {
    // john doe is there
} else {
    // john doe isn't
}

答案 1 :(得分:1)

简单无法做到。您将要切换到this one并执行:

$html->find('div[text=" John Doe "]', 0);