Этот preg_replace не работает для меня в php 7.4

$regex = array(
                "`^([\t\s]+)`ism"=>'',
                "`^\/\*(.+?)\*\/`ism"=>"",
                "`([\n\A;]+)\/\*(.+?)\*\/`ism"=>"$1",
                "`([\n\A;\s]+)//(.+?)[\n\r]`ism"=>"$1\n",
                "`(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+`ism"=>"\n"
            );
$file_content = preg_replace(array_keys($regex), $regex, $file_content);

Я получил это предупреждение:

preg_replace(): Ошибка компиляции: escape-последовательность недействительна в классе символов по смещению 4


person Meir Levi    schedule 29.11.2020    source источник


Ответы (1)


Причина \A в квадратных скобках.

Вот хороший ответ о причина в общем.

Движок PHP PCRE переходит на PCRE2

PCRE2 более строг в проверке шаблонов, поэтому после обновления некоторые из ваших существующих шаблонов больше не могут компилироваться.

person Konstantin Bogomolov    schedule 29.11.2020
comment
ОК, так что мне нужно поставить вместо - \A ? - person Meir Levi; 29.11.2020
comment
Я не знаю, какова была ваша цель, используя \A в шаблонах. Вроде можно просто удалить. Или переместите его за квадратные скобки, вот так ...(\A|[\n;]+... - person Konstantin Bogomolov; 29.11.2020