说我有
$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)
但它删除了所有标签
答案 0 :(得分:4)
您可以使用
'/<[^>]*>(?=[^[\]]*\])/'
它远非万无一失,但可能还不错。
只有在字符串前面]
之前有[
时才会替换代码。
当然,它要求字符串中的<
,>
,[
或]
使用不同。
答案 1 :(得分:3)
preg_replace_callback('/\[[^\]]+\]/', function($matches){
return preg_replace('/<[^>]*>/', '', $matches[0]);
}, $content);
首先,找到所有方括号区域,然后替换其中的标签。