preg_replace(array('#/(.?)#e', '/(^|_|-)+(.)/e'),
array("'::'.strtoupper('\\1')", "strtoupper('\\2')"), $text);
我從來沒有用過這樣的正則表達式,它是如何工作的?有人可以在PHP中解釋這段代碼嗎?
preg_replace(array('#/(.?)#e', '/(^|_|-)+(.)/e'),
array("'::'.strtoupper('\\1')", "strtoupper('\\2')"), $text);
我從來沒有用過這樣的正則表達式,它是如何工作的?有人可以在PHP中解釋這段代碼嗎?
它甚至可以工作嗎?
echo camelize('http://google.com/');
結果:
Http:::/google.com::
它的大部分如何 「工作」 可以在文檔上preg_replace找到。它使用數組形式進行多次替換(請參見示例2)。它使用e
開關執行PHP代碼,而不是進行字符串替換。
通常是:preg_replace('/pattern/flags', $replacement, $text)
。
這裏的第一個和第二個參數是相同大小的數組,它就像你爲數組的每個$元素調用preg_replace一樣。
其次,/
通常是模式分隔符,但實際上您可以使用任何字符,只要將其用作第一個分隔符即可。 (這裏#
在第一圖案中使用)
在替換字符串,\\1
(其\1
轉義)表示第一括號匹配和\2
的含量的第二場比賽。
\1
是什麼是匹配由.?
在所述第一圖案和\2
是什麼`。\在第二圖案
替換什麼是/(.?)
與'::'.strtoupper('\\1')
匹配其中\1
是由什麼匹配替換匹配在正則表達式組1:(.?)
而取代的是什麼(^|_|-)+(.)
與strtoupper('\\2')
其中\2
是由什麼是正則表達式組2匹配替換匹配:(.)
正則表達式#1:/(.?)
表示:
/ # match the character '/'
( # start capture group 1
.? # match any character except line breaks and match it once or none at all
) # end capture group 1
和正則表達式#2:(^|_|-)+(.)
表示:
( # start capture group 1
^ # match the beginning of the input
| # OR
_ # match the character '_'
| # OR
- # match the character '-'
)+ # end capture group 1 and repeat it one or more times
( # start capture group 2
. # match any character except line breaks
) # end capture group 2
注意^
輸入的開頭匹配,不字面^
!