一、正則反引用
正規表示式,在php中我經常能用到。用的場景也很多,比如,正則匹配字串,判斷字元是否存在,正則替換等等。
例子一:
$string = 'abcd';$re = preg_replace('/(a)/', '\1a',$string
);echo
$re;
//結果
// aabcd
這裡用到了正則的捕獲組概念和反引用。
解釋:
捕獲組我們可以從第乙個`(` 向後數, 第乙個括號裡面匹配到的內容,我們可以用\1
來引用,為了看的明顯,特意拼接了
`a` ,其實我們還可以用$+數字來表示第幾個捕獲組。 這裡可以用$1,效果和\1一樣。
例子二:
$string = 'abcd';$re = preg_replace('/(a)/', '$1b',$string
);echo
$re;
//結果
//abbcd
二、轉義符
什麼是轉義符?
在php中我們用 `\` 來轉譯一些特殊的字元。
例子三:
$string = 'abcd';$re = preg_replace('/(a)/', '\1b',$string
);echo
$re;
//結果
//abbcd
解釋: 這裡的\1把是作為捕獲組的反引用。
例子四:
$string = 'abcd';$re = preg_replace('/(a)/', '\\1b',$string
);echo
$re;
//結果
//abcd
解釋:這裡的` \\1`
,第乙個`\`
,轉譯了第二個`\`, 那麼就成了 `\1b` , 其實效果和例子三的 `\1` 是一樣的。
例子五:
$string = 'abcd';$re = preg_replace('/(a)/', '\\\1b',$string
);echo
$re;
//結果
//\1bbcd
解釋:這裡的`\\\1`,第乙個`\`,轉譯了第二個`\`,那麼就剩下了`\\1`,`\\` 輸出 `\`,最後,就剩下 `1`了。
三、總結
1、php正則中的反引用,\1和$1效果是一樣的,我們都可以拿來用。
2、php正則中的轉義符,當遇到多個`\`
的時候,我們可以先"去掉"乙個,然後,在去匹配。這樣就好理解啦。
深入理解 引用
引用簡介 引用就是某一變數 目標 的乙個別名,對引用的操作和對變數直接操作完全相同。引用的宣告方法 型別識別符號 引用名 目標變數名 例1 int a int ra a 定義引用ra,他是變數a的引用,即別名 說明 1 在此不是求位址運算,而是起標識作用。2 型別識別符號是指目標變數的型別。3 宣告...
深入理解( )左值引用和( )右值引用
左值是指既能出現在等號左邊也能出現在等號右邊的變數 或表示式 右值則只能出現在等號右邊 返回左值引用的函式,連同賦值 下標 解引用和前置遞增 遞減運算子,都是返回左值的表示式 返回非引用型別 右值引用的函式,連同算術 關係 位以及後置遞增 遞減運算子,都返回右值的表示式 左值持久,右值短暫,左值有持...
深入理解php的引用賦值
關於php引用的一般問題大家看資料就行了,這次我們來聊點有趣的東西。今天乙個朋友在群裡面問起來乙個關於變數引用賦值的問題,問題本身很簡單,我突然想做乙個實驗,來看看array直接賦值和引用賦值效能上的差別,寫完 發現另外乙個問題.請看 a array fill 0,1000000,10 functi...