私のデータにnullバイトの\0
が追加されている2つのケースがありました。なぜvar_dumpにnullバイトが表示されないのですか?
array(1) { [0]=> string(14) "\0myClass\0var" }
たら、2.暗号化されたデータを復号:
function encrypt_data($data) {
return base64_encode(mcrypt_encrypt(MCRYPT_BLOWFISH , SALT , $data , MCRYPT_MODE_ECB));
}
function decrypt_data($data) {
$data = base64_decode($data);
return mcrypt_decrypt(MCRYPT_BLOWFISH , SALT , $data , MCRYPT_MODE_ECB);
}
$data = '123456789aasdasd';
$edata = encrypt_data($data);
var_dump(addslashes(decrypt_data($edata)));
出力:
string(39) "123456789aasdasd\0\0\0\0\0\0\0"
class myClass {
private $var;
function __construct() {}
}
$myObject = (array) new myClass();
var_dump(array_map("addslashes", array_keys($myObject)));
出力アレイにオブジェクトを1.Casting
しかし、私は決して\0
には気づかないでしょう。addslashes
の機能はありません。なぜちょうどvar_dump()
にそれらが表示されないのですか?たとえば、var_dump("Hello\0 World");
は 'Hello World'を出力します。私の意見では、データの悪い表現です。そして私が知る限り、\0
バイトはC言語の文字配列(PHPの文字列)の終わりであり、PHPはC言語で実装されています。
'var_dump(" Hello \ 0 World ");' _does_文字を表示します。それはあなたのブラウザでは明らかではありません。コマンドラインからそのコードを試してみましょう。 'string(12)" Hello \ 000 World "を出力として取得します。 – jszobody
MACの '\ php -aには\ 0が見えません。 php> var_dump( "Hello \ 0 World"); 文字列(12) "Hello World" ' –
私はMacでも同様です.'php -a; php> var_dump( "Hello \ 0 World"); string(12) "Hello \ 000 World" 'なぜ異なる結果が出るのかわからない – jszobody