我试图通过在PHP中使用以下reg表达式删除( )
之间的内容,我的代码也删除了HTML标记内的内容。我怎么能过来呢?
输入 - 解释(诗)是一组<a href="/wiki/Statement_(logic)" title="Statement (logic)">statements</a>
,通常构造为
预期输出 - 解释是一组<a href="/wiki/Statement_(logic)" title="Statement (logic)">statements</a>
通常构造为
我得到的输出 - 解释是一组<a href="/wiki/Statement_" title="Statement ">statements</a>
通常构造为
我的代码是 - preg_replace('/\(([^()]*+|(?R))*\)\s*/', ' ', $string);
答案 0 :(得分:0)
此方法假设您只想从括号子字符串删除过程中取消<a>
标记。
模式:~<a.*?</a>(*SKIP)(*FAIL)| *\([^()]*\) *~
替换:
Regex Demo
如果您的$string
可以包含任何/所有html标记,则必须稍微放松模式。
模式:~<(\S+).*?</\1>(*SKIP)(*FAIL)| *\([^()]*\) *~
替换:
Regex Demo
*请注意我的模式中我匹配(文字空间)而不是
\s
这是为了保留新行并保持字符串预期结构。
(*SKIP)(*FAIL)
可以提前取消不需要的匹配。