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

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

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

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

最佳答案

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

如果改为使用单引号,则可以使用:

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

但是,如果我正确理解了您的问题,则您的正则表达式似乎也不正确。如果要用破折号\x00替换chars \x91-,则必须将它们放在方括号[]中:
$str = preg_replace('/[\x00\x91]/', '-', $str) ;

关于php - PHP中的正则表达式二进制模式搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39602815/

10-12 00:08
查看更多