我有这个数组$array
:
Array
(
[0] => http://download.server.com/18821_SM_139.jpg
[1] => http://download.server.com/18821_SM_134.jpg
[2] => http://download.server.com/18821_SM_138.jpg
[3] => http://download.server.com/18821_SM_138.jpg
[4] => http://download.server.com/18821_ABS_132.jpg
[5] => http://download.server.com/18821_SM_138.jpg
)
在这种情况下,我正在寻找内部有ABS
的任何行。
我可以使用正则表达式http://.+ABS.+
来查找,这将选择整行。
但是我仍然需要将它从数组中删除,而不仅仅是替换它(或将其留空。)但在这种情况下,数组将变为:
Array
(
[0] => http://download.server.com/18821_SM_139.jpg
[1] => http://download.server.com/18821_SM_134.jpg
[2] => http://download.server.com/18821_SM_138.jpg
[3] => http://download.server.com/18821_SM_138.jpg
[4] => http://download.server.com/18821_SM_138.jpg
)
任何想法我需要使用哪种方法?
感谢。
编辑:
我正在使用OOP php
答案 0 :(得分:3)
将array_filter()
与自定义回调一起使用。
示例:
function testABS($elem) {
return strpos($elem, 'ABS') === false;
}
print_r(array_filter($the_array, 'testABS'));
注意:这是一个人为的例子。您需要调整回调函数中的逻辑以满足您的需求。
答案 1 :(得分:1)
$abs = preg_grep('/ABS/', $your_array);
并将匹配作为数组返回。它还有一个标志,只返回不匹配的条目,这可能是你想要的:返回所有没有'abs'的条目。
答案 2 :(得分:1)
我理解的是你想要从数组中删除该元素。 可以这样做。
$arr = Array
(
[0] => http://download.server.com/18821_SM_139.jpg
[1] => http://download.server.com/18821_SM_134.jpg
[2] => http://download.server.com/18821_SM_138.jpg
[3] => http://download.server.com/18821_SM_138.jpg
[4] => http://download.server.com/18821_ABS_132.jpg
[5] => http://download.server.com/18821_SM_138.jpg
);
$new_arr = array();
foreach($arr as $link){
if(!preg_match('ABS', $link)){
$new_arr[] = $link;
}
}
//ths will give array with only 4 elements as '18821_ABS_132.jpg' will be removed
return $new_arr;