Commas in preg_match string of words(Preg_Match字符串中的逗号)
本文介绍了Preg_Match字符串中的逗号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在将过滤帖子存储到数据库之前,我先存储它们的列表,然后再针对它们发帖。
我将坏字存储在数组中,并使用管道分隔符进行内爆,以便执行一次检查。
$bad_words_regex = "/" . implode('|', config_item('bad_words')) . "/";
if( preg_match(strtolower($bad_words_regex), strtolower(trim($message))) == FALSE ) {
// save to database
}
我注意到带有逗号的消息没有保存到数据库中。我想我还应该检查其他字符(-、_、@、#)。
我需要修改第一行,以便当消息包含逗号之类的字符和您认为我会遇到相同问题的其他字符时,它不会返回True。
更新为未保存的示例帖子和一些坏词的数组:
未保存到数据库的示例消息(在句子末尾包含一个空格字符):
This is your last chance to decide between The Car, The Personality and the Lion
坏字数组(不是完整列表)
//bad words array
$config['bad_words'] = array(
'2g1c',
'2 girls 1 cup',
'acrotomophilia',
'anal',
'anilingus',
'Split',
'anus',
'arsehole',
'ass',
'asshole',
'assmunch',
'auto erotic',
'autoerotic',
'babeland',
'baby batter',
'ball gag',
'ball gravy',
'ball kicking'
);
更新:我发现它找到了两个匹配的实例,pis(剧集中的pis)和trio(单词中的爱国者)。我需要帮助修改正则表达式以搜索整个单词,而不是单词的片段。
推荐答案
正如@ridgerunner在您问题的注释中提到的,正则表达式"或"运算符需要将单词列表括起来。
例如,您当前的regex如下所示:
/word1|word2|word3/
它应该是:
/(word1|word2|word3)/
要使其与您的PHP代码一起工作,请执行如下操作:
$bad_words_regex = "/(" . implode('|', config_item('bad_words')) . ")/";
这篇关于Preg_Match字符串中的逗号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Preg_Match字符串中的逗号
基础教程推荐
猜你喜欢
- Libpuzzle 索引数百万张图片? 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 在多维数组中查找最大值 2021-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01