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

在php中查找字符串数组中字符串的开头,php,Php,我知道我们有php in_数组函数 但我正在寻找一种方法,在字符串数组中查找与特定字符串开头匹配的值 例如,查找 $search_string = '<div>1</div>'; $search_string='1'; 在这样的数组中 $array = ( 'sample' => '<div>1</div><p>fish food</p>', 'sample2' => '<div>

我知道我们有php in_数组函数

但我正在寻找一种方法,在字符串数组中查找与特定字符串开头匹配的值

例如,查找

$search_string = '<div>1</div>';
$search_string='1';
在这样的数组中

$array = (
    'sample'  => '<div>1</div><p>fish food</p>',
    'sample2' => '<div>2</div><p>swine</p>
);
$array=(
“样本”=>“1鱼食”

, “样本2”=>“2猪

);

这有意义吗?

试试或者。

为什么不循环遍历数组,用正则表达式、strstrstr或substr(…)=$search\u string进行检查

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

您可以在数组的所有行上循环,并在每个字符串上使用
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);
  }
}

或者也可以这样做:

返回由 输入数组中 匹配给定的模式

例如:

$result = preg_grep('/^' . preg_quote($search_string, '/') . '/', $array);
var_dump($result);
(别忘了使用!)

将为您提供:

array
  'sample' => string '<div>1</div><p>fish food</p>' (length=28)
数组
“样本”=>字符串“1鱼食”(长度=28)

请注意,通过这种方式,您不会得到键,而只会得到行的内容。

如果您只需要查找
$array
中的任何字符串是否以
$search\u string
开头(基本上是一种检查字符串开头的替代方法),您还可以使用:


Yo Palantir,我真的为你感到高兴,伊玛让你说完了,但Ionut有史以来最好的答案之一@意象学家,真的吗?你指的是我对这个问题的回答还是另一个?我决定使用strpos,因为我认为它比正则表达式更有效,而且我对字符串有很大的控制权
array
  'sample' => string '<div>1</div><p>fish food</p>' (length=28)
array_reduce($array, function ($contains, $item) use ($search_string) {
    return $contains = $contains || (strpos($search_string, $item) === 0);
}, false);