我有一些html,我想使用preg_replace删除包含内容的特定div标签。
代码:
<div class="time-trainer"> sjdgj</div>
我想删除包含class="time-trainer"
的div并删除内容。
preg_replace可以正常工作从html中删除图片标记,但我们如何使用div
$rmvimgfromdata = preg_replace("/<img[^>]+\>/i", "", $data);
上面的代码工作正常,可以从html中删除图像。
由于
答案 0 :(得分:1)
试试这个
$html = '<div class="time-trainer">Remove</div>';
// Show
echo $html;
// Remove
echo preg_replace('~<div([^>]*)(class\\s*=\\s*["\']time-trainer["\'])([^>]*)>(.*?)</div>~i', '', $html);
<强>更新强>
使用DOM
$html = '<div class="time-trainer">
<p class="fifths">asdasdas</p>
<p class="hundredths">asdasdas</p>
<p class="winner-info">asdasdas</p>
</div>';
$dom = new DOMDocument;
$dom->loadHTML( $html );
$xpath = new DOMXPath( $dom );
$pDivs = $xpath->query(".//div[@class='time-trainer']");
foreach ( $pDivs as $div ) {
$div->parentNode->removeChild( $div );
}
echo preg_replace( "/.*<body>(.*)<\/body>.*/s", "$1", $dom->saveHTML() );
答案 1 :(得分:0)
使用preg_replace无法删除元素(并确保结果是有效的xml)。
考虑以下示例:
dsadsa
<div class="time-trainer">
adsadas
<div>dsadas</div>
dsa
<div>das</div>
dsadsa
</div>
ddsadas
正则表达式在语言理论中描述常规语言(L3),而XML则处于更高层次(L1)。
要修改XML文件,您应该使用xml解析器,并使用它删除/添加/修改元素。阅读有关XML manipulation
的文档