在php中查找字符串数组中的字符串的开头

时间:2009-09-18 11:13:54

标签: php

我知道我们有php in_array函数

但是我正在寻找一种方法来查找开始匹配特定字符串

的字符串数组中的值

例如find ...

$search_string = '<div>1</div>';

在这样的数组中......

$array = (
    'sample'  => '<div>1</div><p>fish food</p>',
    'sample2' => '<div>2</div><p>swine</p>
);

这是否有意义

5 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

您可以循环遍历数组的所有行,并在每个字符串上使用strpos;有点像这样:

$search_string = '<div>1</div>';
$array = array(
    'sample'  => '<div>1</div><p>fish food</p>',
    'sample2' => '<div>2</div><p>swine</p>'
);

foreach ($array as $key => $string) {
  if (strpos($string, $search_string) === 0) {
    var_dump($key);
  }
}

这将为您提供以搜索字符串开头的行的键:

string 'sample' (length=6)


或者preg_grep也可以做到这一点:

  

返回由。组成的数组   输入数组的元素   匹配给定的模式。

例如:

$result = preg_grep('/^' . preg_quote($search_string, '/') . '/', $array);
var_dump($result);

(别忘了使用preg_quote!)

会得到你:

array
  'sample' => string '<div>1</div><p>fish food</p>' (length=28)

请注意,这样,您不会获得密钥,而只会获取该行的内容。

答案 2 :(得分:1)

如果您只需要查找$array中的任何字符串是否以$search_string开头(基本上是检查字符串开头的替代in_array()),您还可以使用{ {3}}:

array_reduce($array, function ($contains, $item) use ($search_string) {
    return $contains = $contains || (strpos($search_string, $item) === 0);
}, false);

答案 3 :(得分:0)

您需要使用正则表达式。请检查此tutorial

答案 4 :(得分:0)

为什么不循环使用数组并检查正则表达式,strstr或substr(...)== $ search_string?

$res = "";
foreach($array as $key => $value) {
  if(substr(0, strlen($search_string)-1, $value) == $search_string) {
    $res = $key;
    break;
  }
}