Php 如何使用preg_replace从html中删除特定div
我有一些html,我想用preg_replace删除带有内容的特定div标记 代码: 上述代码可以很好地从html中删除图像 谢谢你试试这个Php 如何使用preg_replace从html中删除特定div,php,regex,Php,Regex,我有一些html,我想用preg_replace删除带有内容的特定div标记 代码: 上述代码可以很好地从html中删除图像 谢谢你试试这个 $html = '<div class="time-trainer">Remove</div>'; // Show echo $html; // Remove echo preg_replace('~<div([^>]*)(class\\s*=\\s*["\']time-trainer["\'])([^>]
$html = '<div class="time-trainer">Remove</div>';
// Show
echo $html;
// Remove
echo preg_replace('~<div([^>]*)(class\\s*=\\s*["\']time-trainer["\'])([^>]*)>(.*?)</div>~i', '', $html);
$html='Remove';
//展示
echo$html;
//除去
echo preg\u replace('~]*)(class\\s*=\\s*[“\']time trainer[“\'])([^>]*)>(.*?~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() );
$html='1!'
asdasdas
asdasdas
asdasdas
';
$dom=新的DOMDocument;
$dom->loadHTML($html);
$xpath=newdomxpath($dom);
$pDivs=$xpath->query(“../div[@class='time-trainer']”);
foreach($pDivs作为$div){
$div->parentNode->removeChild($div);
}
echo preg_replace(“/.*(....*/s)”、“$1”、$dom->saveHTML());
使用preg\u replace无法删除元素(并确保结果是有效的xml)
考虑以下示例:
dsadsa
<div class="time-trainer">
adsadas
<div>dsadas</div>
dsa
<div>das</div>
dsadsa
</div>
ddsadas
dsadsa
阿德萨斯
达达斯
数字减影
达斯
dsadsa
ddsadas
正则表达式在语言理论中描述正则语言(L3),而XML则处于更高的级别(L1)
要修改XML文件,应该使用XML解析器,并使用该解析器删除/添加/修改元素。阅读有关的文档,感谢您的回复,但它不起作用。您可以在此处查看页面的来源。它仍然显示htmlif中的div标记。如果我尝试使用DOM,它的“显示我”警告以及功能不起作用。请告诉我是否需要添加任何其他文件以启用DOM。文档中没有此类标记(computerhorse.com/admin1/fetch.php)。不,php的PCRE正则表达式库支持匹配嵌套结构,并且可以轻松匹配您引用的“不可能”示例(NET和Perl也是如此。请不要再说正则表达式是正则表达式了,它们不是正则表达式,而且已经很久没有了。可能确实有更可靠的方法来提取DIV结构(例如XML DOM),但说使用regex无法实现这一点是完全错误的。
$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() );
dsadsa
<div class="time-trainer">
adsadas
<div>dsadas</div>
dsa
<div>das</div>
dsadsa
</div>
ddsadas