Поиск бинарного шаблона в регулярном выражении Regex

Я пытаюсь найти и заменить двоичные значения в строках:

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

Но я получаю «Предупреждение: preg_replace (): нулевой байт в регулярном выражении» сообщение об ошибке.

Как работать с двоичными значениями в Regex / PHP?

5

Решение

Это потому, что вы используете двойные кавычки " вокруг вашего шаблона регулярных выражений, которые заставляют PHP-движок анализировать символы \x00 а также \x09,

Если вместо этого вы используете одинарные кавычки, это будет работать:

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

Но ваше регулярное выражение также кажется неправильным, если я правильно понял ваш вопрос. Если вы хотите заменить символы \x00 а также \x91 с чертой -, вы должны поместить их в скобки []:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]