Предположим, я хочу проверить ввод, чтобы разрешить буквы и цифры Unicode плюс настроенные символы.
$allow_symbols = './*!@%&[]:,-_ ';
// $allow_symbols = '';
$pattern = '/^['.preg_quote($allow_symbols).'\p{L}\p{N}]+$/iu';
print $pattern."\n";
preg_match($pattern, '');
Песочница находится здесь: http://sandbox.onlinephpfunctions.com/code/b99a8f042695d1dc1528834d21e6eb6ad62972e6
Я получил Warning</b>: preg_match(): Unknown modifier '\' in <b>[...][...]</b> on line <b>9</b>
Проблема возникает из $ allow_symbols, если я переопределю его пустой строкой, как она закомментирована - ничего плохого не произойдет.И когда я прошёл точно напечатанный шаблон до https://www.phpliveregex.com/p/rxj, он работает нормально.
Итак, в чем дело и как с этим бороться?