2012-02-01 173 views
0

嗨我試圖用[]的長字符串替換,|,但以下內容似乎失敗。PHP preg_replace在2個分隔符之間

這是字符串。

ID:3a0dd504341fb10a055xxxxxx,時間:星期三年2月1 12時54分39秒EST 2012,客戶端:10.192.34.13,用戶:用戶[ID:1456xcvererwe,會話ID:sdfweerwer234325433],動作:USER_ACTION_ITEM,動作ID: 36014,結果是:失敗,原因:USER_EXCEPTION,參數:[ABCD,TEST12,測試]

這是我想要的輸出。

ID:3a0dd504341fb10a055xxxxxx,時間:星期三年2月1 12時54分39秒EST 2012,客戶端:10.192.34.13,用戶:用戶[ID:1456xcvererwe |會話ID:sdfweerwer234325433],操作:USER_ACTION_ITEM,操作ID:36014,結果:失敗,原因:USER_EXCEPTION,參數:[abcd | test12 |測試]

我嘗試以下

$text = preg_replace("/(^[)(.*)(])/U","|",$text); 

回答

0

使用preg_replace_callback

$text = 'ID: 3a0dd504341fb10a055xxxxxx, time: Wed Feb 01 12:54:39 EST 2012, client: 10.192.34.13, user: User [ID: 1456xcvererwe, session ID: sdfweerwer234325433 ], action: USER_ACTION_ITEM, action id: 36014, result: FAIL, reason: USER_EXCEPTION, arguments: [abcd, test12 , testing ]'; 

function rep($r){ 
    return "[". preg_replace('/\s*,\s*/',' | ', $r[1]). "]"; 
} 
echo preg_replace_callback('/\[([^\]]+)\]/i', 'rep', $text); 
+0

嗨Shiplu,非常感謝。它的工作,只是一個簡單的問題,如果我想替換:以及[]中,你可以讓我知道的語法。 ? – harishom 2012-02-03 17:57:08

+1

使用''/ \ s * [:,] \ s * /''代替''/ \ s *,\ s * /'' – 2012-02-03 21:06:55

+0

非常好。 – harishom 2012-02-21 17:55:41

相關問題