如何判斷preg_match內正規式的特殊符號?

Daniel WANG
Backend Record
Published in
1 min readJun 6, 2017

使用正規式時,有以下這些特殊用途符號:. \ + * ? [ ^ ] ( $ )等等

如果將一個加有特殊符號的字串直接丟給 preg_match做判斷一定會有錯誤

ex:

$var = “小明(daniel)”;if(pre_match( “/”.$var.”/”, “我是小明(daniel)”)){echo “yes”;}else{echo “NO”;}

照理說輸出會是y ,但是他無法判斷特殊符號,所以輸出NO

因此只要加上quotemeta 他會自動幫變數裡面字串的特殊符號加上 “\” ,在正規式內就會被正確判斷

修正後如下 :

$var = “小明(daniel)”;$var = quotemeta($var) ;if(pre_match( “/”.$var.”/”, “我是小明(daniel)”)){echo “yes”;}else{echo “NO”;}//輸出 yes

--

--