php配置16进制ascii码\x00的问题

\x00在16进制ascii码中表示Null,php使用正则匹配替换如果写成这样

$content = 'xxxx';
$pattern = "/\x00/";
$content = preg_replace($pattern, "", $content);

会报Warning: preg_replace(): Null byte in regex in xxx.表示正则不可以有Null

输出$pattern,为

 

可以\x00在解析的时候会被当成Null,$pattern和我们预期的不一样。所以需要再加一个\对\进行转义,使\x00不被解析成Null,而是被当做\x00.

应该写成这样

$content = 'xxxx';
$pattern = "/\\x00/";
$content = preg_replace($pattern, "", $content);

输出$pattern,为

你可能感兴趣的:(php)