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 には必要な機能がありません。
EDIT
一部のコードを複数回使用する場合は、カスタム関数を作成します。

于 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 に答える