如何获取多个值可以使用php变为单个

时间:2018-08-06 17:44:27

标签: php strpos

我是PHP的新手。我有一个字符串。我用它来查找strpos函数的单词 例如。

$a= "google" ;
$b= "google is best one" ;

  if(strpos($b, $a) !== false) {
echo "true, " ; // Working Fine...

}

所以我想在这种情况下检查我的示例

$a= "google,yahoo,Bing" ;
$b= "Bing is Good " ;

  if(strpos($b, $a) !== false) {
echo "true, " ; // I Need True...

}

这就是您使用PHP的方式

4 个答案:

答案 0 :(得分:0)

为澄清起见,您似乎正在尝试执行匹配,以使$a中包含$b的值列表中的任何值。用简单的strpos()调用是不可能的,因为strpos()会查找您要传递的字符串的确切位置。

您要尝试的是基于模式的搜索。为了使这项工作有效,请注意使用带有preg_match()的正则表达式。这样的例子可能像这样:

$pattern = '/google|yahoo|Bing/';
$target_string = 'Bing is good';

if(preg_match($pattern, $target_string)) {
    echo "true, ";
}

有关更多信息,请研究正则表达式语法并对其进行处理,直到您熟悉它们的工作原理为止。

答案 1 :(得分:0)

使用explode()在逗号上分割字符串,然后分别检查每个部分:

%

答案 2 :(得分:0)

就像Patrick Q所说,数组示例中的放置名称是here

因为您要搜索所有三个单词“ google,yahoo,Bing”,所以这三个单词都不正确。

但供初学者了解其他方式。

>>> lst = ['abs', '@abs', '&abs']
>>> new_lst = [l for l in lst if all(x not in l for x in ['@','&'])]
>>> new_lst
['abs']
>>> 

您还可以循环检查

答案 3 :(得分:0)

您可以使用正则表达式解决问题:

if (preg_match('/string1|string2|string3/i', $str)){
  //if one of them found
}else{
  //all of them can not found
}