我有这个:
$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/