[英]Get only text in html tag with PHP Simple HTML DOM
我尝试使用PHP Simple HTML DOM仅在span标签中获取文本-> 1 2 3 <-
这是我的HTML代码:
<div class="pager rel clr"> <span class="fbold prev abs large"> <a class="link pageNextPrev {page:1}" href="SOME LINK"> <span>«Prev</span> </a> </span> <span class="item fleft"> <a class="block br3 brc8 large tdnone lheight24" href="SOME LINK"> <span>1</span> </a> </span> <span class="item fleft"> <span class="block br3 c41 large tdnone lheight24 current"> <span>2</span> </span> </span> <span class="item fleft"> <a class="block br3 brc8 large tdnone lheight24" href="SOME LINK"> <span>3</span> </a> </span> <span class="fbold next abs large"> <a class="link pageNextPrev {page:3}" href="SOME LINK"> <span>Next»</span> </a> </span> </div>
编辑我创建这样的PHP代码:
$e = $html->find('div.pager',0)->children();
foreach($e as $getnextpage=>$value){
if(is_numeric($value->plaintext)){
$yey = "This Number";
}else{
$yey = "Not Number";
}
echo "</br>";
print $yey . "==>" . $value->plaintext . "</br>";
}
结果:
不是数字==> 1
不是数字==> 2
不是数字==>下一步»
cek数如何...?
div.pager
具有span
标签递归所以你得到的每一个文本span
的两倍。 如果您只想获取页码,请尝试以下操作:
$html = str_get_html($curlData);
$e = $html->find('div.pager');
foreach($e as $getnextpage)
{
foreach($getnextpage->find('span.fleft') as $get) {
$innerSpan = $get->find('span');
print($innerSpan);
}
}
唯一可能的改进是使用类似以下的方法来消除foreach:
$html = str_get_html($curlData);
$e = $html->find('div.pager span.item a span');
foreach($e as $getnextpage)
{
if(stripos($getnextpage->innertText,'next') == false && stripos($getnextpage->innertText,'prev')
{
$pages[] = $getnextpage->innerText;
}
}
生产线的替代品
if(stripos($getnextpage->innertText,'next') == false && stripos($getnextpage->innertText,'prev')
例如可能要检查它是否为整数
if(is_int($getnextpage->innertText))
上述所有方法的另一种替代方法是,您想要的跨度在其周围有一个锚元素,只有那些带数字的跨度才具有class block
。 因此,例如,您可以执行以下操作:
$html = str_get_html($curlData);
$e = $html->find('div.pager span.item a.block span');
foreach($e as $getnextpage)
{
$pages[] = $getnextpage->innerText;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.