0

次の文字列があるとします。

$s = "ABCDEFGEHIJ";

そして配列:

$a = array("2", "7", "A", "E", "J", "W", "Z");

$s を検索して $a の文字が存在するかどうかを確認し、存在するすべての文字を含む配列を返すにはどうすればよいですか? だから私は結果を得るでしょう:

$result = array("A", "E", "J");

strpos($s, "A"); を試しました。ただし、これは単一の文字列に対してのみ機能し、位置を返すため、基準を満たしていません。SOはどのようにそれを行うでしょうか?

4

1 に答える 1

2

ループできます。私には少し不格好に思えますが。

$s = "ABCDEFGEHIJ";
$a = array("2", "7", "A", "E", "J", "W", "Z");
$matches = array();
foreach ($a as $i) {
    if (strpos($i, $s)) {
        $matches[] = $i;
    }
}

または、文字の配列に含まれていないすべてのものを正規表現に置き換えます。

$s = "ABCDEFGEHIJ";
$a = array("2", "7", "A", "E", "J", "W", "Z");
$out = preg_replace('/[^' . implode('',$a) . ']/' , '', $s);

そして、それを配列に変えますstr_split($out)

于 2013-08-19T02:39:39.617 に答える