升级到PHP 7.3
后出现此错误
这是什么意思?
preg_replace():编译失败:字符类中的范围无效 在偏移量5 /var/www/...(97)#0 [内部功能]:{closure}(2, 'preg_replace():...','/ var / www / dyntes ...',97,数组)#1 /var/www/...(97): preg_replace('/ [^ \ pL-\ / ,. \ d \ ...','','d
$str = preg_replace('/[^\pL'.$allow_chars.']/', '', $str);
答案 0 :(得分:2)
只需使用preg_quote转义$allow_chars
中的特殊字符:
$str = preg_replace('/[^\pL'.preg_quote($allow_chars).']/', '', $str);
根据评论(您不能使用preg_quote),这是完成工作的另一种方法:
如果连字符位于$allow_char
的第一位,则可以执行以下操作:
$str = preg_replace('/[^'.preg_quote($allow_chars).'\pL]/', '', $str);
不需要在字符类中排在首位的连字符。