如何只保留以" bs"?开头的字符串?

时间:2015-02-26 19:54:59

标签: php regex

我有这个数组

array (size=7)
  0 => string 'Â bs-0468R(20UG)' (length=16)
  1 => string 'Â bs-1338R(1ML)' (length=15)
  2 => string 'Â bs-1557G(NO BSA)' (length=18)
  3 => string 'Â bs-3295R(NO BSA)' (length=18)
  4 => string '" bs-0730R' (length=10)
  5 => string '" bs-3889R' (length=10)
  6 => string 'bs-0919R (NO BSA)' (length=17)

我想丢弃所有内容,只保留以bs开头的字符串。

最好的做法是什么?

3 个答案:

答案 0 :(得分:3)

这样的事情:

$result = array_filter($array, function ($i) {
    return strpos($i, 'bs')===0;
});

答案 1 :(得分:1)

我爱preg_grep

$result = preg_grep('/^bs/', $array);

答案 2 :(得分:1)

我同意@Casimir et Hippolyte。如果你知道你总是会有一个受控制的数据集,例如你的例子(罕见),你总是可以将字符串作为一个数组引用 - 它已经在引擎盖下了:

$result = array_filter($array, function ($v) {
    return $v[0] . $v[1] == 'bs';
});

正则表达式是惊人的,并不是大多数情况下的性能问题,但是我遇到了一些问题,其中其他功能在计算时更快更有效。我理解这种说法对于大多数应用程序来说并不正确,但值得注意。