最近流行のヌルバイト
http://bba-ltom.blogspot.com/2008/02/php.html
エスケープ文字ってか参照文字ってか、\0 とか \n とか \r って環境に依存するのであんまり信用できない。
その実体がなんだかはっきりしてるなら、16進数などで実体を直接指定するのが安全。
$hoge = "\x00"; $hoge = str_replace("\x00", '', $hoge); if ($hoge == '') echo 'hoge';
追記
よくある話題だけど補足。
改行文字は、Windows では CR+LF , Mac: CR, Linux: LF を標準で取り入れており、また \n はその環境にもろに依存する。
つまりLinux で str_replace("\n", '', $line) とかしても CR は消せない。
いろいろ回避策はあるが、一番安全なのはやはり実体を直接指定すること。
$line = preg_replace("/[\x0D\x0A]/", '', $line);
追追記
実体を指定できればいいので、chr(0) でも pack でもよござんす。