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

公開

スポンサーリンク

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

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

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

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

スポンサーリンク


Comment