我知道我们有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>
);
这是否有意义
答案 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;
}
}