删除特定类

问题描述:

的一个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。 这是可能的,如果是的话我该如何解决问题? 在此先感谢。

+1

你到目前为止尝试过什么?你用什么来解析html,或者你希望把它当作一个字符串来对待? –

+0

@yardpenalty没有,如果他想在php中做这个服务器端? –

+0

正确的,这就是为什么我删除了评论。如果他总是获取文件内容,他可以在'$(document).ready'上使用jQuery tho – yardpenalty

我会建议使用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(); 

<!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>

+1

我认为OP想要删除整个div。 – chris85

+0

是的,我想删除整个div。对不起,问题的标题是错误的。 – NaMo

+0

@ user6803164哎呀,对不起,我太快读了这个问题。我已经更新了我的答案。 –

你应该这样做使用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); 

根据您的使用情况,您可以让这个表达式更加/限制较少。

+0

收到的错误: 致命错误:无法在第7行的C:\ xampp \ htdocs \ tutorial \ index.php的写入上下文中使用方法返回值 – NaMo

+0

index.php中的第7行是什么? –

+0

foreach($ a as $ dom-> find('。progress-bar')) – NaMo