[PHP] preg_match の文字列の間にスラッシュが入っている場合の対処方法

ファイルパスの文字列をpreg_matchした時の話。

#状況

$dirNamepreg_matchってみるとWarningが発生。

if ( preg_match("/{$dirName}\.bak(.*)$/", $dn, $suf) ) {
  // foo, bar
}

#対処方法

#理由

文字列内の/は、\/とエスケープする必要がある。
(事前にエスケープできる場合はしておく方がよいと思う)

#関数を使う

preg_quoteのデリミタに/を指定しておく。

$dirName = preg_quote($dirName, "/");

これでエスケープされるのでpreg_matchが通るようになる。

twitterfacebookhatenafacebook