【发布时间】:2013-09-16 20:57:00
【问题描述】:
由于我不能使用 preg_match(UTF8 支持以某种方式被破坏,它在本地工作但在生产中中断)我想找到另一种将单词与黑名单匹配的方法。问题是,我只想搜索完全匹配的字符串,而不是第一次出现的字符串。
这就是我使用 preg_match 的方式
preg_match('/\b(badword)\b/', strtolower($string));
示例字符串:
$string = "This is a string containing badwords and one badword";
我只想匹配“badword”(最后)而不是“badwords”。
strpos('badword', $string) matches the first one
有什么想法吗?
【问题讨论】:
-
将字符串拆分为空格,并根据您的黑名单检查每个单词
-
@jonhopkins 这不适用于标点符号(假设会有一些)。
-
真的.. 没想到。当然有办法去掉标点符号吗?
-
它在生产中究竟是如何中断的?哪个是你的 PHP 版本,哪个是生产服务器的 PHP 版本?
-
@HenriqueBarcelos 它只是不匹配,我最终使用 mb_ereg 而不是 preg_match - 成功了。