preg関数でバックスラッシュを処理する際に軽くはまったので備忘録。
'.()/\'にバックスラッシュを追加
$target =~ s/([.()\/\\])/\\$1/
$target = preg_replace('/([.()\/\\\\])/','\\\\$1',$target)
なににはまったのかというと、
\\\\とバックスラッシュが4つ必要なこと。
なんでこんな構文なのかについては、
ここで知ったのだが、
簡単にいうと、
PHPが文字列リテラル→正規表現の順で2重評価をしているため
ということ。
…確かにバッドノウハウ(BK)だわ。
- ■やりたい事
- ■perlの場合
- ■PHPの場合
なににはまったのかというと、
\\\\とバックスラッシュが4つ必要なこと。
なんでこんな構文なのかについては、
ここで知ったのだが、
簡単にいうと、
PHPが文字列リテラル→正規表現の順で2重評価をしているため
ということ。
…確かにバッドノウハウ(BK)だわ。