[PHP] 正規表現の特殊文字をエスケープするpreg_quote()
スポンサーリンク
正規表現で文字列の置換を行う場合、事前に特殊文字のエスケープを行わねばなりません。そのために便利なPHPの関数がpreg_quote()
です。
文章の先頭を意味する“^”や任意の一字を表す“.”のような特殊文字を、通常の文字として置き換えたい場合、あらかじめバックスラッシュを手前に書くことでエスケープしておかねば正しく動作してくれません。preg_quote()
はこのような場合に使います。
$str = '-._~%:/?#[]@!$&\'()*+,;='; $str = preg_quote( $str , '/'); echo $str;// \-\._~%\:\/\?#\[\]@\!\$&'\(\)\*\+,;\=
preg_quote()
の使い方は、第1引数にエスケープしたい文字列を渡します。第2引数はオプションで、ここで指定した文字もデフォルトのものと共にエスケープしてくれます。バッククオート“\”は正規表現の特殊文字ではないので、デフォルトでは置換されません。しかし、バッククオート自体もエスケープの必要がありますので、preg_quote()
を使う場合は必ず第2引数に'/'
を渡すと考えておいた方が良いでしょう。
スポンサーリンク