Я пытаюсь найти и заменить двоичные значения в строках:
$str = '('.chr(0x00).chr(0x91).')' ;
$str = preg_replace("/\x00\x09/",'-',$str) ;
Но я получаю «Предупреждение: preg_replace (): нулевой байт в регулярном выражении» сообщение об ошибке.
Как работать с двоичными значениями в Regex / PHP?
Это потому, что вы используете двойные кавычки "
вокруг вашего шаблона регулярных выражений, которые заставляют PHP-движок анализировать символы \x00
а также \x09
,
Если вместо этого вы используете одинарные кавычки, это будет работать:
$str = '(' . chr(0x00) . chr(0x91) . ')' ;
$str = preg_replace('/\x00\x09/', '-', $str) ;
Но ваше регулярное выражение также кажется неправильным, если я правильно понял ваш вопрос. Если вы хотите заменить символы \x00
а также \x91
с чертой -
, вы должны поместить их в скобки []
:
$str = preg_replace('/[\x00\x91/]', '-', $str) ;
Других решений пока нет …