2012-04-13 147 views
0

也許這對我來說太遲了,但我試圖用PHP中的正則表達式替換2個字符串之間的字符。替換字符串之間的字符

例字符串:

other | text [tag]text|more text|and more[/tag] end | text 

我的目標是與<br/>[tag][/tag]之間更換|

這個試過了,看來它是不是很簡單,但:

/<td>(\|)<td>/gsi 

搜索了一下,但不能做出與我找到的東西答案。

希望能對你有所幫助,謝謝

+0

很難理解你想要做什麼。你是否想要替換髮生在給定html標籤的兩次出現之間的字符_ | _的每個出現?如果是這樣,是否保證只有兩次出現的標籤(或者可能有3,4等...)? – jahroy 2012-04-13 23:23:52

+0

@jahroy如果我正確地讀了這個,是的,它是 – trembon 2012-04-13 23:27:13

回答

3

首先,發現裏面有什麼[tag] S,然後找到管道。 PHP 5.3:

$result = preg_replace_callback('/\[tag\](.+?)\[\/tag\]/i', function($match) { 
    return str_replace('|', '<br />', $match[1]); 
}, $str); 
+0

+1對於'preg_replace_callback' – Robbie 2012-04-13 23:27:15

+0

謝謝,發現其餘的我自己雖然,改變$匹配[1]爲$匹配[0],因爲我想保留[標籤]的 – trembon 2012-04-13 23:33:16