我有我認爲會是一個簡單的preg_replace但是導致我幾個問題。Preg_replace行爲不如我預期
輸入
Thank you $(-1) for raiding us! Go follow him guys! twitch.tv/[1]
代用
preg_replace("/\[(\d+)\]/", "\$(${1})", $output);
期望輸出
Thank you $(-1) for raiding us! Go follow him guys! twitch.tv/$(1)
這樣做的目的是爲了從舊的API移動到一個新的 - 在[1]可在輸入字符串中的任何位置
我遇到的問題是,這是輸出
Thank you $(-1) for raiding us! Go follow him guys! twitch.tv/$()
,似乎是忽略了捕獲組
編輯: 解決通過改變置換到
preg_replace('#\[(\d+)\]#', '\$(${1})', $output);
是U肯定嗎?似乎工作[完美](http://ideone.com/qLdRPy) – DarkBee 2014-12-04 20:12:43
我很積極。我嘗試了幾種格式的變體,我無法讓它輸出捕獲組中的數字。它在這裏也很完美:http://www.phpliveregex.com/p/8BE 到目前爲止的完整腳本可以在http://pastebin.com/hWvR6qfb 找到,因爲我猜它可能是我的東西在這裏做錯了 編輯:沒關係我只是檢查你的例子,它的工作..我似乎錯過了「#」。請回答你的例子,我會標記爲完整:)(不是我明白'#'是什麼:P – 2014-12-04 20:16:31
'#'只是[delimeters](http://php.net/manual/ en/regexp.reference.delimiters.php),它標誌着RegEx的開始和結束。分隔符可以是任何非字母數字,非反斜槓,非空白字符,我只是更喜歡'#',大多數人傾向於使用'/' – DarkBee 2014-12-04 21:27:39