php判断是否包含两个词的正则表达式

我想判断是否包含两个词,比如 '外送' 和 '茶' 这两个词

1.两个词中只出现某一个,通过
2.两个词都有出现,则不通过

求表达式
其实就是情色广告的过滤,外送和茶两个词都出现就是情色的内容(台湾外送茶是暗指上门服务),但是外送和茶单独出现就不算情色内容,两个词都没有出现当然也不算违规内容啦

第1个回答  推荐于2018-04-14
正则:
<?php
$str = "我想判断是否包含两个词,比如 '外送' 和 '茶' 这两个词";
if(preg_match("/外送/", $str) || preg_match("/茶/", $str)){
echo "通过";
}
else
{
echo "不通过";
}
?>追问

其实你的逻辑有错误,
还有能不能一条正则实现呢?可能我会有3个词,4个词,5个.....

追答


看上去比较繁杂,不推荐用正则,效率低。

追问

词很多的话,效率确实低,请问还有其他更好的办法吗?

追答

$key = array("非法","词汇","过滤");
$str = "检查这句是否包含非法词汇";
for($i = 0; $i -1)
{
echo "非法";
exit(0);
}
}

思路是这样,没调试。

本回答被提问者和网友采纳
第2个回答  2012-06-07
前面两位的合起来就可以了
第3个回答  2012-06-07
问题描述不够完整
如果两个词都不出现 是通过还是不通过呢~

PHP preg_match_all中正则的写法
上面的正则表达式"\/"就是分隔符,两个"\/"之间的就是表达式,第二个"\/"后面的字符串"is"就是修饰符。在表达式中如果含有分隔符,那么就需要使用转义符号"\/",比如"\/hello.+?\/\/hello\/is"。转义符号除了用于分隔符外还可以执行特殊字符,全部由字母构成的特殊字符都需要"\/"来转义,比如"\/d"代表全体数字。正则表达式...

麻烦高手写个php判断, 比如cd=2 如何判断下面固定地方有2的输出内容...
{ echo '没有2';} else { echo '有2';}

php中如何判断内容中是否包含指定的文字?
如果不是特别复杂的字符判断,不建议用正则,php的字符串函数完全可以实现,strpos()例如:x = "abc张三klllk";if(strpos($x,"张三") > 0){ echo "ok";} 当然这样会有一个问题,就是当"张三"出现在字符串开头的时候,结果也为0,这时候就要在字符串前加一特殊字符来判断。x="张三abc";x1 ...

在Python中,判断一个字符串是否包含另一个字符串
在Python中,要检查一个字符串是否包含另一个字符串,多种方法可供选择:首先,利用内置的in关键字,这是最直观且常用的方法。只需检查目标字符串是否在源字符串的子序列中,即可轻松完成判断。其次,可以使用str.find()函数,它返回子字符串在父字符串中的首次出现位置。如果找不到子字符串,find()...

超常用的PHP正则表达式收集整理
以下就是对超常用的PHP正则表达式进行的收集整理,为了方便大家更快更好的掌握php正则表达式。一、表单验证匹配 验证账号,字母开头,允许 5-16 字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15} 验证账号,不能为空,不能有空格,只能是英文字母:^\\S+[a-z A-Z]验证账号,不能有...

正则表达式如何匹配包含“Error”而不包含“(ignored)”。
这个只能分两个正则写 比如php程序作个例子:str = ' 测试 Error 字符串 ';str2 = ' 测试 Error 字符串(ignored) ';if ( preg_match('\/Error\/i', $str) && !preg_match('\/\\(ignored\\)\/i', $str) )echo " str 正确匹配!";else echo " str 不匹配!";if ( preg_match('\/Error\/...

php 如何用strstr 查找多个字符 比如$aa="1234567@0" 里查找1或2或@...
haystack 中,请使用速度更快、耗费内存更少的 strpos() 函数。建议使用正则表达式简单些如:aa = "1234567@0";$search = '\/[12@]\/';if(preg_match($search , $aa)){ \/\/包含1或者2或者@}else{ \/\/不包含}参考PHP手册网址:http:\/\/php.net\/manual\/zh\/function.strstr.php ...

有关于php if () 和!及正则函数preg_match判断问题
if(!$m || !preg_match("\/^[a-z]+$\/", $m))! 是不为真 即0, false或null 等值 || 是OR的意思即或者 !preg_match 即不匹配 上面的代码是判断$m 这个值是0, 空值或false时, 或者 不匹配英文字母就执行下面的代码

匹配字符串中多个数据的正则表达式?
正则表达式见图 我给你一个php语言的例子,你看看吧.<?php str='14:56:5422.72-0.01';str=$str.'3374,976卖盘';regex='\/>([^<>]+)<\/';preg_match_all($regex,$str,$matches);print_r($matches[1]);?>

php正则表达式[quote][size=2][url=。。...[\/quote]怎么匹配
string = '[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=848579&ptid=6666][color=#999999]撒旦法撒旦法发表于 2014-11-10 23:06[\/color][\/url][\/size]ask江东父老卡双打冠军啊圣诞节阿莱克斯的结果...[\/quote]';st = '\/\\[quote\\][\\s\\S]*\\[\\\/quote\\]\/';preg...

相似回答