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 回答