我有一些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。 这是可能的,如果是,我该如何解决问题? 提前谢谢。
答案 0 :(得分:2)
从you cannot remove an element from a list while iterating开始,然后构建一个待删除的数组,并在搜索后删除它们。
<?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();
<!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;
答案 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);
根据您的使用情况,您可以使此正则表达式更多/更少限制。