即
$text = 'remove this text (keep this text and 123)';
echo preg_replace('', '', $text);
它应该输出:
(keep this text and 123)
最佳答案
这会做到:(并且也适用于嵌套的 ()
)
$re = '/[^()]*+(\((?:[^()]++|(?1))*\))[^()]*+/';
$text = preg_replace($re, '$1', $text);
这里有几个测试用例:
Input:
Non-nested case: 'remove1 (keep1) remove2 (keep2) remove3'
Nested case: 'remove1 ((keep1) keep2 (keep3)) remove2'
Output:
Non-nested case: '(keep1)(keep2)'
Nested case: '(keep1) keep2 (keep3)'
关于php - 去掉括号外的文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5293283/