1. 程式人生 > >正則表示式裡單雙引號區別

正則表示式裡單雙引號區別

最近學習正則表示式的時候做了一個小案例,如下

<?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、" 雙引號

這四個字元在雙引號中是具有特殊含義的,其他都沒有,而單引號使所有字元都失去特殊含義

希望對大家有幫助