使用简单的HTML DOM解析器删除空白标签

时间:2014-07-29 05:38:57

标签: php html dom simple-html-dom

我有一个html输入,其中包含许多空白的强标记。所以我想从html中删除这些空白的强标签。我使用了简单的HTML DOM,但它没有工作

foreach($html->find('strong') as $strong)
{

    if(trim($strong->innertext) == '')
    {
        echo 'blank strong';
    }
}

在上面的代码中,我检查了if条件没有trim函数,但仍然没有成功。 如何从html代码中删除仅包含空格的空白标签或标签?

2 个答案:

答案 0 :(得分:2)

你没有给出一个例子但是假设你有这个标记,你可以使用outertext。 (顺便说一句,我也不能在手册上找到某种removeChild()

$html_string = '
<div class="container">
<strong>Text1</strong>
<strong>Text2</strong>
<strong>Text3</strong>
<strong></strong>
<strong>Text5</strong>
</div>
';

$html = str_get_html($html_string);
foreach($html->find('strong') as $element) {
    if(trim($element->innertext) == '') {
        $element->outertext = '';
    }
}

echo htmlentities($html);

应输出:

<div class="container"> <strong>Text1</strong> <strong>Text2</strong> <strong>Text3</strong> <strong>Text5</strong> </div>

第四个<strong></strong>标签现在应该消失了。

答案 1 :(得分:0)

您可以使用jquery删除空白标签。

$(document).ready(function(){
    $('strong').each(function(){
        if($.trim($(this).html()) == ''){
            $(this).remove();
        }
    })
})

您还可以使用preg_replace删除空的html标记。

$html = "abc<strong></strong><p>dd</p><b>non-empty</b><strong>  ashish </strong><strong><a>click</a></strong><strong>   </strong><strong>test</strong>"; 
$pattern = "/<[^\/>]*>([\s]?)*<\/[^>]*>/"; // pattern for removing all empty tags
echo preg_replace($pattern, '', $html);