从标签html获取数据

时间:2014-06-19 08:22:34

标签: php html simple-html-dom

我想在<b>标签中获取数据,例如:

<b>
    <sup>1</sup>A, a
</b>
<b> ab </b>
<b><sup>2</sup>A</b>

我想从上面的标记中获取A,aabA

但有时在数据行中没有<sup>标记,如下所示:

<b>ab</b>

但我想获得数据ab

我尝试关注<b>代码:

foreach($html->find('b') as $word) {
   $words = $word->innertext;
       echo $words.'<br>';}

但是当有<sup>标记时,内部<sup>标记中的文字也会打印出来。如何在<sup>标记内获取数据?谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用clone()方法获取父元素内的文本,即<b></b>并忽略<sup></sup>或其中的任何其他元素。

$('b')
.clone()      //clone the element
.children()   //select all childrens
.remove()     //remove all the children
.end()        //return to the matched element
.text();      //get the text

答案 1 :(得分:0)

尝试:

<?php
$html = "<b>
            <sup>1</sup>A, a
        </b>
        <b> ab </b>
        <b><sup>2</sup>A</b>";
//remove all html tags without <sup>
$html = strip_tags($html,"<sup>");
//remove <sup> tag with its content
$html = preg_replace('#\<sup>[{\w},\s\d"]+\</sup>#', "", $html);
//remove \t, \n and \r (tabs, newline etc)
$html = str_replace(array("\t","\n","\r"),"",$html);
//also you can remove space from string
$html = str_replace(" ","",$html);
echo $html;
?>