如何找到字符串的多个子字符串,但如果找不到多个子字符串,仍会返回很多子字符串

时间:2013-07-26 19:29:59

标签: php

好的,这样更容易解释。

我有一个变量:

 $string

我也有子串变量:

$sub1, $sub2, $sub3, $sub4

如果找到任何子字符串变量,我需要回显$ string。包括是否找到多个子字符串变量。

我用它来查找子串:

    if (strpos($filename, $clothes) > 0 {
        echo $string
    }

让我感到困惑的事情主要是返回$ string,如果所有OR只是一些子串。

2 个答案:

答案 0 :(得分:2)

首先,为简单起见,将这些子字符串变量视为数组。 现在,代码可能如下所示,

function doIt($string, $sub_strings){
    foreach($sub_strings as $substr){
        if(strpos($string, $substr) !== FALSE)
        {
          return $string; // at least one of the needle strings are substring of heystack, $string
        }
    }

   return ""; // no sub_strings is substring of $string.
}

并使用此功能,

echo doIt($string,array($str1,$str2,$str3,$str4));

感谢Orangepill!

答案 1 :(得分:0)

只需创建一个函数,根据字符串测试数组中的每个值,如果找到则返回true。

function findOneOf(array $terms, $string){
      foreach ($terms as $term){
          if (strpos($string, $term) !== FALSE){
              return true;
          }
      }
      return false;
}

然后你可以像

那样进行测试
if (findOneOf(array($sub1, $sub2, $sub3,$sub4), $string)){
     echo $string;
}