http://d.hatena.ne.jp/teracc/20080606#20080606fn1
preg_replace関数にe修飾子が付く場合、後方参照する変数に含まれる「"」などの文字は、PHPにより自動でaddslashesされるからです*1。
昔から、よくわからなかったのが、preg_replaceで後方参照する時にシングルクォートで囲わなければいけないってこと。
3年前にPHP-Usersに投げた投稿だけど、
[PHP-users 25894] preg_replaceのe修飾子でオブジェクトのメソッドを使う
ここ、実はいまだにわかってなかったりする。
なんつーか、そもそもe修飾子を使ったことがほとんどないっていうのが理由でもある。使わないと覚えないからなー。
もう一回読んで追記する予定。