相关疑难解决方法(0)

未检测到正则表达式preg_quote符号

我在数据库中有一个发誓单词的字典,以下作品很棒

preg_match_all("/\b".$f."(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)

$t是输入文本,简单地说,$f = preg_quote("punk"); "punk"是来自数据库字典,所以在循环的这一点上表达式如下

preg_match_all("/\bpunk(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)

preg_quote替换符号,例如.#\\#这样的表达是逃过一劫,但如果词典的检查如."F@CK""A$$"与上述表达式输入字符串没有检测到这些符号,我都a$$f@ck在词典中,但它们不工作.如果我删除preg_quote()单词,则正则表达式无效,因为这些符号不会被转义.

有关如何检测的任何建议"a$$"???

编辑:

所以我想那些没有按预期工作的表达将是例如.

preg_match_all("/\bf\@ck(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)

哪个应该找到f @ ck in$t

更新:

这是我的用法,简单地说; 如果有$m替换它们的匹配"\*\*\*\*",则整个块在循环中通过字典中的每个单词,$f是字典单词并且$t是输入

$f = preg_quote($f);
preg_match_all("/\b$f(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
if (count($m) > 0) {
     $t = preg_replace("/(\b$f(?:ing|er|es|s)?\b)/si","\*\*\*\*\*",$t);
}
Run Code Online (Sandbox Code Playgroud)

更新:看,var_dump:

preg_quote($f) = string(5) "a\$\$"
$t = string(18) "You're such an a$$"
expression = string(29) …
Run Code Online (Sandbox Code Playgroud)

php regex profanity preg-match

35
推荐指数
2
解决办法
2897
查看次数

标签 统计

php ×1

preg-match ×1

profanity ×1

regex ×1