php字符串查找

我想用PHP在一个串里查找一些敏感的单词,现在敏感的单词是一个大的数组,请问PHP里有直接使用这个数组当做参数来查找字符串的函数吗,并且效率较高的比如$str=“qwdk... 我想用PHP在一个串里查找一些敏感的单词,现在敏感的单词是一个大的数组,请问PHP里有直接使用这个数组当做参数来查找字符串的函数吗,并且效率较高的
比如
$str=“qwdkjlkjasdioqwelkjwe”;
$a = array('aa','bb','cc','dd');
要在$str里查找$a里的单词,有直接能用的函数吗?
展开
 我来答
IT互联天下
推荐于2018-05-18 · 知道合伙人软件行家
IT互联天下
知道合伙人软件行家
采纳数:1437 获赞数:5161
PHP开发工程师

向TA提问 私信TA
展开全部

  PHP字符串查找的函数的函数比较多,这里演示下常用几种使用方法:

<?php
//1.strstr()函数:用于获取一个指定字符串在另一个字符串中首次出现的位置开始,直到结束的子字符串,
//如果执行成功,则返回剩余字符串;否则返回false。
echo strstr("zhidao.baidu.com","baidu");  
//baidu.com
  

//2. strpos()函数:返回字符串在另一个字符串中第一次出现的位置。如果没有找到字符串,则返回false。
$str = 'hello,iambaiduzhidao!';
$find = 'zhidao';
if(strpos($str,$find)!==false){
echo '字符串包含:zhidao!';
}else{
echo '字符串不包含:zhidao!';
}
//输出结果:字符串包含:zhidao!


//返回字符串zhidao在str中第一次出现的位置
echo strpos($str,$find);
//14
?>
fengzhiyu_double
2011-07-11 · TA获得超过906个赞
知道小有建树答主
回答量:514
采纳率:0%
帮助的人:522万
展开全部
一般替换就是用str_replace啊,直接就可以用数组的。比如:
$str=“qwdkjlkjasdioqwelkjwe”;
$a = array('aa','bb','cc','dd');
$b = array('**', '**','**','**');
$str = str_replace($a, $b, $str);
追问
那个效率太低了,我的参数数组比较大,而且效率要求较高。。
追答
一般我替换敏感词都是用这个的,已经是效率最高的了。
你可以测试下执行时间。
比你foreach的遍历数组要快的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qibaqiba2
2011-07-11 · 超过29用户采纳过TA的回答
知道答主
回答量:118
采纳率:0%
帮助的人:49.8万
展开全部
in_array($str,$a);
追问
是在str里查找$a,不是$a中查找$str
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
daven009
推荐于2016-07-06 · TA获得超过200个赞
知道答主
回答量:89
采纳率:0%
帮助的人:60万
展开全部
<?php
$str=“qwdkjlkjasdioqwelkjwe”;
$a = array('aa','bb','cc','dd');

foreach($a as $findme){
$pos = strpos($str, $findme);

if ($pos === false) {
echo "The string '$findme' was not found in the string '$str'";
} else {
echo "The string '$findme' was found in the string '$str'";
echo " and exists at position $pos";
}
}

?>
追问
我一开始是这么弄得,后来改成用正则了,把关键字拼成一个正则串,是用preg_match匹配的,这样效率比foreach高很多,不过谢谢你啦~还有谢谢2楼德朋友
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式