删除特定类的div

时间:2016-11-13 18:00:58

标签: javascript php html css

我有一些div:

 func getReferralValueToShow() -> Double
{
    var valueToReturn = self.referral % 25
    if self.referral<25
    {
        valueToReturn = self.referral
    }
    else
    {
        valueToReturn = 25
    }
    let a = priceSubTotal()
    if a < Double(valueToReturn)        {
        return a
    }
    else
    {
        return Double(valueToReturn)
    }


}
func priceSubTotal() -> Double {
    return quantities.reduce(0, combine: { (t, q) in t + q.totalPrice })
}

我想使用php删除任何出现在课堂上的div&#34; progress-bar&#34;在页面的HTML代码中。 像:

如果我有一些代码的file_html.php,我将使用此行获取它的HTML代码:

<h4>Ruby on Rails</h4>
<div class="progress-bar green">
    <span style="width: 90%"></span>
</div>
<h4>HTML/CSS</h4>
<div class="progress-bar orange">
    <span style="width: 80%"></span>
</div>
<h4>PHP</h4>
<div class="progress-bar orange">
    <span style="width: 60%"></span>
</div>
<h4>Javascript</h4>
<div class="progress-bar red">
    <span style="width: 40%"></span>
</div>

现在我想删除代码中出现的进度条div。 这是可能的,如果是,我该如何解决问题? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

我建议使用the DOMDocument class

you cannot remove an element from a list while iterating开始,然后构建一个待删除的数组,并在搜索后删除它们。

Here's a working fiddle.

<?php
$html = file_get_contents('file_html.php');

$dom = new DOMDocument();
$dom->loadHTML($html);

$divs = $dom->getElementsByTagName('div');
foreach ($divs as $div) {
    $class = $div->getAttribute('class');
    if (strpos($class, 'progress-bar') !== false) {
        $domElemsToRemove[] = $div;
    }
}

foreach( $domElemsToRemove as $domElement ){ 
    $domElement->parentNode->removeChild($domElement); 
}

echo $dom->saveHTML();

&#13;
&#13;
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><h4>Ruby on Rails</h4>

<h4>HTML/CSS</h4>

<h4>PHP</h4>

<h4>Javascript</h4>
</body></html>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您应该使用HTML解析器执行此操作:

使用https://github.com/paquettg/php-html-parser

$dom = new Dom;
$html = file_get_contents('file_html.php');
$dom->load($html);
foreach($a as $dom->find('.progress-bar')) {
    $a->delete();
    unset($a);
}
echo $dom; 

如果你想使用字符串(不推荐):

echo preg_replace('/(<div class=.*?progress\-bar.*?<\/div>)/s', '', $html);

根据您的使用情况,您可以使此正则表达式更多/更少限制。