获取包含多个字符的div的文本

时间:2014-08-13 13:44:29

标签: php html css dom simpledom

想象一下,我们希望得到HTML页面的 div,span,p等 ID 的名称,包含一些关键词如:

one& two& three

例如我有这个HTML:

<div class="this_one">
  Need this !
</div>
<div id="some_three">
  Need this again !
</div>
<span id="two_this">
  Need again
</span>
<p class="NOT">
Not want this
</p>

我的意思是我希望得到特殊标签内的文字,如(div,p,span),它们的ID或CLASS,包含我的文字,如(一,二,......)

如何检测它们?

例如,simpledomPHPDOM或您想要的任何方式。

5 个答案:

答案 0 :(得分:1)

使用jquery,您可以使用[name*="value"]选择器执行此操作,例如:

var patterns = ["one","two","three"];

var text = "";
for(i in patterns) {
    text += $("[id*='"+patterns[i]+"']").text();
    text += $("[class*='"+patterns[i]+"']").text();
 }

alert(text);

DEMO FIDDLE

答案 1 :(得分:1)

您可以使用类似这样的jquery选择器按类循环元素:

$("[class=className]").each(function( index ) {
   // do something here
});

选择多个班级:

$("[class=className1], [class=className2]").each(function( index ) {
   // do something here
});

这是JSFiddle示例:JSFiddle

答案 2 :(得分:1)

您可以使用JQuery's selectors

// elements who's class contains one
$('[class~="one"]').click(function() {
   // do stuff
});

答案 3 :(得分:1)

简单的方法是在页面中获取所需的所有div,span或任何其他标记。检查每个内容以及是否找到匹配项。使用标签的名称或ID。

此链接上的内容非常相似 Iterating through all the <div> tags on a page

也可以通过

Parse HTML div id include all inner contents

PHP DOM parsing to get to elements inside specific div id

答案 4 :(得分:1)

如果您想使用PHP,则可以使用DOMDocument + DOMXpath。我不是大师xpath,但你可以这样做:

$sample_markup = '<div class="this_one">
  Need this !
</div>
<div id="some_three">
  Need this again !
</div>
<span id="two_this">
  Need again
</span>
<p class="NOT">
Not want this
</p>';

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

$search = $xpath->query('
    /html/body//*[
        contains(@class|@id, "one") or
        contains(@class|@id, "two") or
        contains(@class|@id, "three")
    ]
');

foreach($search as $node) {
    $value_inside_that_node = trim((string) $node->nodeValue);
    echo $value_inside_that_node . '<br/>';
}

应输出:

Need this !
Need this again !
Need again