preg_replace仅在不在块中时

时间:2016-05-27 19:18:41

标签: php preg-replace

我尝试使用preg_replace用括号替换括号,除非这些括号位于代码块中

例如:

this is my {text}
And this is <code>if (true) { echo "hello world" }</code>
And also a multine line one 
<code>
if (true) { echo "hello world" }
</code>
Another {my super text}

我必须输出:

this is my _text_
And this is <code>if (true) { echo "hello world" }</code>
And also a multine line one 
<code>
if (true) { echo "hello world" }
</code>
Another _my super text_

由于

2 个答案:

答案 0 :(得分:0)

您需要先将代码块与文本块分开。您可以使用strpos()substr()的组合来执行此操作。

答案 1 :(得分:0)

我想我已经得到它,需要更多测试但似乎没问题

preg_replace("<code(?:\s+\w+)*>.*?</code>(*SKIP)(*FAIL)|\{|\})is", "_", $text);