PHP中的正则表达式二进制模式搜索

时间:2016-09-20 19:59:33

标签: php regex binary-search binary-data

我正在尝试查找并替换字符串中的二进制值:

$str = '('.chr(0x00).chr(0x91).')' ;
$str = preg_replace("/\x00\x09/",'-',$str) ;

但是我得到“警告:preg_replace():正则表达式中的空字节”错误消息。

如何处理Regex / PHP中的二进制值?

1 个答案:

答案 0 :(得分:10)

这是因为你在你的正则表达式模式周围使用双引号",这使得php引擎解析了字符\x00\x09

如果您使用单引号,它将起作用:

$str = '(' . chr(0x00) . chr(0x91) . ')' ;
$str = preg_replace('/\x00\x09/', '-', $str) ;

但如果我理解你的问题,你的正则表达式似乎也不正确。如果您想用短划线\x00替换字母\x91-,则必须将它们放入方括号[]

$str = preg_replace('/[\x00\x91/]', '-', $str) ;