2016-05-27 38 views
0

我嘗試使用的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_ 

謝謝

+1

所以顯示到目前爲止你已經嘗試了什麼。我們(可能)修復您編寫的代碼。我們不在這裏爲你做你的工作。 –

+0

您的文本不是常規語言。因此,您無法用正則表達式正確解析它。你需要手動解析它線性。 – kainaw

+1

使用其他一些方法來提取字符串的非代碼部分。然後,對其執行'preg_replace',並將其與代碼塊放在一起。 – Barmar

回答

0

我想我已經知道了,需要更多的測試,但似乎是確定

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

您需要先將代碼塊從文本塊中分離出來。您可以使用strpos()substr()的組合來做到這一點。

相關問題