正規表現の特殊文字をエスケープするpreg_quote()

正規表現で文字列の置換を行う場合、事前に特殊文字のエスケープを行わねばなりません。
そのために便利なPHPの関数がpreg_quote()です。

文章の先頭を意味する“^”や任意の一字を表す“.”のような特殊文字を、
通常の文字として置き換えたい場合、
あらかじめバックスラッシュを手前に書くことでエスケープしておかねば正しく動作してくれません。
preg_quote()はこのような場合に使います。

$str = ‘-._~%:/?#[]@!$&\'()*+,;=’;
$str = preg_quote( $str , ‘/’);
echo $str;// \-\._~%\:\/\?#\[\]@\!\$&’\(\)\*\+,;\=

preg_quote()の使い方は、第1引数にエスケープしたい文字列を渡します。
第2引数はオプションで、ここで指定した文字もデフォルトのものと共にエスケープしてくれます。
バッククオート“\”は正規表現の特殊文字ではないので、デフォルトでは置換されません。
しかし、バッククオート自体もエスケープの必要がありますので、preg_quote()を使う場合は必ず第2引数に’/’を渡すと考えておいた方が良いでしょう。

タイトルとURLをコピーしました