PHP 中的正则表达式二进制模式搜索
Regex Binary Pattern Search in PHP
我正在尝试查找和替换字符串中的二进制值:
$str = '('.chr(0x00).chr(0x91).')' ;
$str = preg_replace("/\x00\x09/",'-',$str) ;
但我收到 "Warning: preg_replace(): Null byte in regex" 错误消息。
如何处理 Regex/PHP 中的二进制值?
这是因为您在正则表达式模式周围使用双引号 "
,这使得 php 引擎解析字符 \x00
和 \x09
.
如果您改用单引号,它将起作用:
$str = '(' . chr(0x00) . chr(0x91) . ')' ;
$str = preg_replace('/\x00\x09/', '-', $str) ;
但是如果我正确理解你的问题的话,你的正则表达式似乎也不正确。如果要将字符 \x00
和 \x91
替换为破折号 -
,则必须将它们放在方括号 []
:
中
$str = preg_replace('/[\x00\x91]/', '-', $str) ;
我正在尝试查找和替换字符串中的二进制值:
$str = '('.chr(0x00).chr(0x91).')' ;
$str = preg_replace("/\x00\x09/",'-',$str) ;
但我收到 "Warning: preg_replace(): Null byte in regex" 错误消息。
如何处理 Regex/PHP 中的二进制值?
这是因为您在正则表达式模式周围使用双引号 "
,这使得 php 引擎解析字符 \x00
和 \x09
.
如果您改用单引号,它将起作用:
$str = '(' . chr(0x00) . chr(0x91) . ')' ;
$str = preg_replace('/\x00\x09/', '-', $str) ;
但是如果我正确理解你的问题的话,你的正则表达式似乎也不正确。如果要将字符 \x00
和 \x91
替换为破折号 -
,则必须将它们放在方括号 []
:
$str = preg_replace('/[\x00\x91]/', '-', $str) ;