繁体   English   中英

使用PHP Simple HTML DOM仅获取html标记中的文本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM