2

我刚刚写了这个函数:

function Array_in_String($Haystack1, $Values1)
{
    foreach ($Values1 as $token1) 
    {
        if (strpos($Haystack1, $token1) !== false) return true;
    }
}

它基本上$Haystack1在一个字符串中搜索数组中的多个值,$Values1如果匹配则返回 true。

在此之前,我在 PHP 中搜索了很多类似的字符串函数。我还在想PHP是否有类似的功能?

4

4 回答 4

2

不,PHP 没有您需要的功能。
编辑
如果您想多次使用某些代码,请创建您的自定义函数。

于 2012-12-17T13:14:18.647 回答
1

我不知道这样的功能,但你的逻辑可以通过使用大大简化str_replace

function array_in_string($haystack, $needles) {
    return str_replace($needles, '', $haystack) !== $haystack;
}

小提琴

但是,如果您的针阵列真的很大,那么您问题中发布的代码可能会具有更好的性能,因为它将true在第一场比赛中返回,而我的解决方案总是遍历所有针。

于 2012-12-17T13:27:23.307 回答
0
return array_reduce(
  $Values1,
  function($result, $token1) use ($Haystack1) {
    return $result || strpos($Haystack1, $token1) !== false;
  }, 
  false
);

或者

$matches = array_map(
  function($token1) use ($Haystack1) {
    return strpos($Haystack1, $token1) !== false;
  },
  $Values1
);
return (bool) count(array_filter($matches));
于 2012-12-17T13:40:44.310 回答
-1
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

这会产生:

"lastname,email,phone"

编辑:当然,之后你必须在这个字符串上做一个 preg_match 。

于 2012-12-17T13:14:36.340 回答