删除特定类
问题描述:
的一个div我有一些div:删除特定类
<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>
我想用PHP来删除在页面的HTML代码类“进度条”出现的任何股利。 像:
如果我有一些代码file_html.php,我会得到它的使用此行的html代码:
$html = file_get_contents('file_html.php');
现在我想删除出现在代码中的进度条的div。 这是可能的,如果是的话我该如何解决问题? 在此先感谢。
答
我会建议使用the DOMDocument
class
自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>
答
你应该这样做使用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);
根据您的使用情况,您可以让这个表达式更加/限制较少。
你到目前为止尝试过什么?你用什么来解析html,或者你希望把它当作一个字符串来对待? –
@yardpenalty没有,如果他想在php中做这个服务器端? –
正确的,这就是为什么我删除了评论。如果他总是获取文件内容,他可以在'$(document).ready'上使用jQuery tho – yardpenalty