PHP PCRE正则表达式编译错误

PHP PCRE正则表达式编译错误,php,regex,preg-replace,Php,Regex,Preg Replace,当我尝试以下操作时: $searchText = preg_quote($searchText, '/'); $remarks = preg_replace('/'.$searchText.'/i', '<span class="searchText">$0</span>', $remarks); $searchText=preg_quote($searchText,“/”); $rements=preg_replace('/'.$searchText'/i','$0'

当我尝试以下操作时:

$searchText = preg_quote($searchText, '/');
$remarks = preg_replace('/'.$searchText.'/i', '<span class="searchText">$0</span>', $remarks);
$searchText=preg_quote($searchText,“/”);
$rements=preg_replace('/'.$searchText'/i','$0',$rements);
我收到以下错误消息:

正则表达式在偏移量0处太大

我不知道这意味着什么,为什么我会得到它或者如何修复它。
当我在谷歌上搜索这个错误消息时,我得到了对php.ini设置的引用,我甚至找不到这些引用

正则表达式大小限制为65539(是,不是65536)。你超出了限制

请看这里:


从前面的问题来看,您似乎试图突出显示用户搜索的单词。如果是这样,您不需要正则表达式就可以做到这一点,您可以这样做:

$remarks = str_replace( $searchText, '<span class="searchText">' . $searchText . '</span>', $remarks);
$rements=str_replace($searchText,“.$searchText.”,$rements);

请注意,它将突出显示单词中的字符串。如果你想匹配整个单词,我可以更新我的答案。

“太大”是一个非常明确的信息,也是当代语言中的一个常见短语-你确定你“没有线索”吗?显然你的正则表达式太大了。不知道正则表达式是什么,我们帮不了你。我不明白为什么我的正则表达式会太大。上面的行在一个循环中,一次处理一个DB记录$searchText很小,用户输入的文本最多可能有十几个字符$备注来自VARCHAR2(4000)字段,因此我看不出它是如何超过65000的,除非每次循环都需要设置一些内容$备注并不是每次循环都连接在一起。我还应该提到,问题是在添加preg_quote()行时开始的。我补充说,因为一些用户输入正斜杠字符作为搜索字符串的一部分,这导致了问题。我知道preg_quote()会转义任何正则表达式特殊字符,但我不知道它如何将最多4000个字符的字符扩展到65000多个字符。对我来说,“但希望它们在实践中永远不会相关”这句话会转化为“达到此限制意味着你做错了事情”,这就是我做preg_replace()的原因因为我希望替换不区分大小写,而不改变显示的文本的大小写。我可以将str_replace()更改为str_ireplace(),匹配并突出显示文本,而不管用户输入的是哪种情况,但返回给用户的结果的情况是用户输入的任何情况。
$remarks = str_replace( $searchText, '<span class="searchText">' . $searchText . '</span>', $remarks);