正则表达式语法或其他错误


regular expression syntax or someother error

我有以下正则表达式:

/'w{0,5}[хx]([хx's'!@#'$%'^&*+-'|'/]{0,6})[уy]([уy's'!@#'$%'^&*+-'|'/]{0,6})[ёiлeеюийя]'w{0,7}|'w{0,6}[пp]([пp's'!@#'$%'^&*+-'|'/]{0,6})[iие]([iие's'!@#'$%'^&*+-'|'/]{0,6})[3зс]([3зс's'!@#'$%'^&*+-'|'/]{0,6})[дd]'w{0,10}|[сcs][уy]([уy'!@#'$%'^&*+-'|'/]{0,6})[4чkк]'w{1,3}|'w{0,4}[bб]([bб's'!@#'$%'^&*+-'|'/]{0,6})[lл]([lл's'!@#'$%'^&*+-'|'/]{0,6})[yя]'w{0,10}|'w{0,8}[её][bб][лске@eыиаa][наи@йвл]'w{0,8}|'w{0,4}[еe]([еe's'!@#'$%'^&*+-'|'/]{0,6})[бb]([бb's'!@#'$%'^&*+-'|'/]{0,6})[uу]([uу's'!@#'$%'^&*+-'|'/]{0,6})[н4ч]'w{0,4}|'w{0,4}[еeё]([еeё's'!@#'$%'^&*+-'|'/]{0,6})[бb]([бb's'!@#'$%'^&*+-'|'/]{0,6})[нn]([нn's'!@#'$%'^&*+-'|'/]{0,6})[уy]'w{0,4}|'w{0,4}[еe]([еe's'!@#'$%'^&*+-'|'/]{0,6})[бb]([бb's'!@#'$%'^&*+-'|'/]{0,6})[оoаa@]([оoаa@'s'!@#'$%'^&*+-'|'/]{0,6})[тnнt]'w{0,4}|'w{0,10}[ё]([ё'!@#'$%'^&*+-'|'/]{0,6})[б]'w{0,6}|'w{0,4}[pп]([pп's'!@#'$%'^&*+-'|'/]{0,6})[иeеi]([иeеi's'!@#'$%'^&*+-'|'/]{0,6})[дd]([дd's'!@#'$%'^&*+-'|'/]{0,6})[oоаa@еeиi]([oоаa@еeиi's'!@#'$%'^&*+-'|'/]{0,6})[рr]'w{0,12}/i

当我试图用脚本检查它时,我得到以下错误:

警告:preg_replace():未知修饰符']'在C:'xampp'htdocs'guestbook'index.php第70行

是因为[]吗?或者我必须在我的代码中搜索问题?我的想法是,我从数据库中汇集表达式,并用它们替换消息。代码如下:

$expq = "SELECT `Expression` FROM `expressions` LIMIT 0, 30 ";
     $expr=  mysqli_query($db, $expq);
     $exp=  mysqli_fetch_array($expr);
     foreach ($exp as $expression)
     {
         echo $expression;
     $replacement = "";
$message = preg_replace($expression, $replacement, $message);

     }
     if ($message=="")
     {
         echo 'Текст сообщения не заполнен или содержит не цензурную лексику';
     }
 else { //insert the message into database

您的错误信息

Warning: preg_replace(): Unknown modifier ']'

表示有一个修饰语]。修饰符总是在正则表达式的末尾。因为在你的正则表达式的实际结束是一个/i,这不可能是真的。因此,在正则表达式的某个地方出现了/],它被视为正则表达式的结束。在我看来,有两种方法可以解决这个问题。您可以遵循justin的建议,在regex中添加double ',或者将分隔符设置为一个符号,这在regex中不会出现。我通常用"~"。你的正则表达式最后看起来像这样:

~'w{0,5}[хx]([хx's'!@#'$%'^&*+-'|'/]{0,6})[уy]([уy's'!@#'$%'^&*+-'|'/]{0,6})[ёiлeеюийя]'w{0,7}|'w{0,6}[пp]([пp's'!@#'$%'^&*+-'|'/]{0,6})[iие]([iие's'!@#'$%'^&*+-'|'/]{0,6})[3зс]([3зс's'!@#'$%'^&*+-'|'/]{0,6})[дd]'w{0,10}|[сcs][уy]([уy'!@#'$%'^&*+-'|'/]{0,6})[4чkк]'w{1,3}|'w{0,4}[bб]([bб's'!@#'$%'^&*+-'|'/]{0,6})[lл]([lл's'!@#'$%'^&*+-'|'/]{0,6})[yя]'w{0,10}|'w{0,8}[её][bб][лске@eыиаa][наи@йвл]'w{0,8}|'w{0,4}[еe]([еe's'!@#'$%'^&*+-'|'/]{0,6})[бb]([бb's'!@#'$%'^&*+-'|'/]{0,6})[uу]([uу's'!@#'$%'^&*+-'|'/]{0,6})[н4ч]'w{0,4}|'w{0,4}[еeё]([еeё's'!@#'$%'^&*+-'|'/]{0,6})[бb]([бb's'!@#'$%'^&*+-'|'/]{0,6})[нn]([нn's'!@#'$%'^&*+-'|'/]{0,6})[уy]'w{0,4}|'w{0,4}[еe]([еe's'!@#'$%'^&*+-'|'/]{0,6})[бb]([бb's'!@#'$%'^&*+-'|'/]{0,6})[оoаa@]([оoаa@'s'!@#'$%'^&*+-'|'/]{0,6})[тnнt]'w{0,4}|'w{0,10}[ё]([ё'!@#'$%'^&*+-'|'/]{0,6})[б]'w{0,6}|'w{0,4}[pп]([pп's'!@#'$%'^&*+-'|'/]{0,6})[иeеi]([иeеi's'!@#'$%'^&*+-'|'/]{0,6})[дd]([дd's'!@#'$%'^&*+-'|'/]{0,6})[oоаa@еeиi]([oоаa@еeиi's'!@#'$%'^&*+-'|'/]{0,6})[рr]'w{0,12}~i