我需要获取特定div之间的所有文本。在下面的例子中,我想获得div与类名“st”之间的所有内容:
<div class="title">This is a title</div>
<div class="st">Some example <em>text</em> here.</div>
<div class="footer">Footer text</div>
所以结果将是
Some example <em>text</em> here.
甚至只是
Some example text here.
有谁知道如何做到这一点?
答案 0 :(得分:2)
PHP中的服务器端
一种非常基本的方式是这样的:
$data = ''; // your HTML data from the question
preg_match( '/<div class="\st\">(.*?)<\/div>/', $data, $match );
然后迭代$match
对象。但是,如果.st
DIV中有另一个DIV,则可能会返回错误数据。
更合适的方式是:
function getData()
{
$dom = new DOMDocument;
$dom -> loadHTML( $data );
$divs = $dom -> getElementsByTagName('div');
foreach ( $divs as $div )
{
if ( $div -> hasAttribute('class') && strpos( $div -> getAttribute('class'), 'st' ) !== false )
{
return $div -> nodeValue;
}
}
}
<强>客户端强>
如果你正在使用jQuery,那就很容易:
$('.st').text();
或
$('.st').html();
如果您使用的是纯JavaScript,那么它会有点复杂,因为您需要检查所有DIV元素,直到找到具有所需CSS类的元素:
function foo()
{
var divs = document.getElementsByTagName('div'), i;
for (i in divs)
{
if (divs[i].className.indexOf('st') > -1)
{
return divs[i].innerHTML;
}
}
}
答案 1 :(得分:0)
使用jquery / ajax
然后执行以下操作:
<script>
$(document).ready(function() {
$.ajax({
type: "POST",
url: "urltothepageyouneed the info",
data: { ajax: "ajax", divcontent:$(".st").html()}
})
});
</script>
基本上
$(".st").html()
将返回HTML
和
$(".st").text()
将返回文本
希望有所帮助
答案 2 :(得分:0)
使用XML parser:
$htmlDom = simple_load_string($htmlSource);
$results = $htmlDom->xpath("//div[@class='st']/text()");
while(list( , $node) = each($result)) {
echo $node, "\n";
}