0

说我有

$content = "some text [again < dummy1>< /dummy1> some te < dummy2>< /dummy2>< /dummy3>xt] keep theses < needkeeped>xxx< needkeeped>"

我想删除所有标签< dummyx>,但是,我只想为标签女巫在[]字符之间做

预期的结果是

$content = "some text [again some text] keep theses `< needkeeped>xxx< needkeeped>"`

我试过了

preg_replace('/<[^>]*>/', '', $content)

但它删除了所有标签

4

2 回答 2

4

你可以使用

'/<[^>]*>(?=[^[\]]*\])/'

它远非万无一失,但它可能已经足够好了。

只有当字符串中有一个]before时,它​​才会替换标签。[

当然,它要求在不同用法的字符串中没有<, >, [or ]

于 2013-04-18T18:42:55.273 回答
3
preg_replace_callback('/\[[^\]]+\]/', function($matches){
    return preg_replace('/<[^>]*>/', '', $matches[0]);
}, $content);

首先,找到所有方括号区域,然后替换其中的标签。

http://ideone.com/wmyfXS

于 2013-04-18T18:46:37.547 回答