PHP Regex - 删除标签之间的文本

标签 php regex

我有这个:

$text = 'text text text s html tagove
<div id="content">ss adsda sdsa </div>
oshte text s html tagove';
$content = preg_replace('/(<div\sid=\"content\">)[^<]+(<\/div>)/i', '', $text);
var_dump($content); 

但是如果<div id="content"></div>包含其他标签,例如 <b> , <i>等等,它不起作用。

例如:

$text = 'text text text s html tagove
<div id="content"><b> stfu </b> ss adsda sdsa </div>
oshte text s html tagove';

最佳答案

您可以使用lazy quantifiers相反。

$s="foo<div>Some content is <b>bold</b>.</div>bar\n";

print preg_replace("/<div>.+?<\/div>/i", "", $s);'

输出:

foobar

更新每条评论:

[ghoti@pc ~]$ cat doit.php 
<?php

$text = 'text text text s html tagove
<div id="content"><b> stfu </b> ss adsda sdsa </div>
oshte text s html tagove';

print preg_replace('/<div id="content">.+?<\/div>/im', '', $text) .  "\n";

[ghoti@pc ~]$ php doit.php 
text text text s html tagove

oshte text s html tagove
[ghoti@pc ~]$ 

关于PHP Regex - 删除标签之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9641517/

相关文章:

php - 如何编写一个仅在匹配后有斜杠或什么都没有时才匹配的正则表达式?

regex - 在向后方向制作一个非贪婪的 RegEx,使其行为与向前方向相同

php - 如何长期积累红利?

php - 我在错误控制台中收到无效的正则表达式标志 w 错误

php - 使用 PHP MySQL 填充美国邮政编码

r - 使用 R 从文本中提取重叠的类似年份的部分

java - 罗马数字和正则表达式

c# - 如何在单个匹配中选择没有特殊字符的整个文本?

php - 如果另一个表 ID 匹配则更新一个表

javascript - 提交表单时不要自动滚动到顶部。留在当前位置