你可以用
array_filter
将数组的每个元素与测试字符串进行比较。
$array = [
0 => "TEST_TEST1_ABC_20180920000000.txt",
1 => "TEST_TEST2_ABC_20180920000000.txt",
2 => "TEST_TEST1_EFG_20180920000000.txt"
];
$test = 'TEST1';
$newarr = array_filter($array, function ($v) use ($test) { return preg_match('/^[^_]+_' . preg_quote($test) . '_/', $v); });
print_r($newarr);
Array
(
[0] => TEST_TEST1_ABC_20180920000000.txt
[2] => TEST_TEST1_EFG_20180920000000.txt
)
preg_match
所以
type
i
正则表达式的修饰符,即:
$newarr = array_filter($array, function ($v) use ($test) { return preg_match('/^[^_]+_' . preg_quote($test) . '_/i', $v); });
最后,如果希望对数组进行索引
0,1,...
,只需使用
array_values
print_r(array_values($newarr))
输出:
Array
(
[0] => TEST_TEST1_ABC_20180920000000.txt
[1] => TEST_TEST1_EFG_20180920000000.txt
)