最近流行のヌルバイト

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 でもよござんす。