[PHP] preg_match の文字列の間にスラッシュが入っている場合の対処方法
1 min read
ファイルパスの文字列をpreg_match
した時の話。
状況
$dirName
をpreg_match
ってみるとWarningが発生。if ( preg_match("/{$dirName}\.bak(.*)$/", $dn, $suf) ) {
// foo, bar
}
対処方法
理由
文字列内の/
は、\/
とエスケープする必要がある。
(事前にエスケープできる場合はしておく方がよいと思う) 関数を使う
preg_quote
のデリミタに/
を指定しておく。$dirName = preg_quote($dirName, "/");
これでエスケープされるのでpreg_match
が通るようになる。