正則表示式裡單雙引號區別
阿新 • • 發佈:2018-12-19
最近學習正則表示式的時候做了一個小案例,如下
<?php
$str = 'aabbocccc';
$patt = "/([a-z])\1+/";
preg_match_all($patt, $str, $res);
echo preg_replace($patt,'\1',$str);
?>
看上去沒什麼問題,執行一下看結果——
嗯?不對啊?怎麼沒有替換成aboc???
之後百度了很長時間,終於找到了錯在了哪裡,下面是正確的程式碼——
<?php $str = 'aabbocccc'; $patt = '/([a-z])\1+/'; preg_match_all($patt, $str, $res); echo preg_replace($patt,'\1',$str); ?>
執行結果——
對,,,,就是第三行引號惹的禍,,,,
原因是因為
雙引號裡面遇到$,\等特殊字元會進行相應的變數替換
單引號裡面的所有字元都保持原樣
1、$ 美元符
2、\ 反斜槓
3、` 反引號
4、" 雙引號
這四個字元在雙引號中是具有特殊含義的,其他都沒有,而單引號使所有字元都失去特殊含義
希望對大家有幫助