2012-02-01 177 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

相关问题