シングルクォーテーションとダブルクォーテーションの違いで詰まった。
http://qiita.com/suin/items/cbbbe8844fd734fa20e2 を参考にした、改行コードを統一するコード
$tmp = preg_replace("/\r\n|\r|\n/",'\n', $hogehoge);
$tmp = preg_replace("/\r\n|\r|\n/","\n", $hogehoge);
どのように挙動が異なるかは上のコードと以下を続けて試してみれば良い。
4パターンが想定される。
explode('\n',$tmp);
explode("\n",$tmp);
クォーテーションを統一しないと、意図したとおりの挙動を示さない。
というのも、シングルかダブルかによって、\nを改行として扱うかが変わるからだ。
ダブルはシングルより多くの文字を、エスケープして扱う。
http://www.php.net/manual/ja/language.types.string.php#language.types.string.syntax.double を見れば何がエスケープされるか分かる。
変数の展開だけがクォーテーションの違いではないという教訓です。