Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用regexp从数组中删除数据?_Php_Regex_Arrays - Fatal编程技术网

Php 如何使用regexp从数组中删除数据?

Php 如何使用regexp从数组中删除数据?,php,regex,arrays,Php,Regex,Arrays,我有这个数组,$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

我有这个数组,
$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
的行

我可以通过使用regexp
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

与自定义回调一起使用

例如:

function testABS($elem) {
    return strpos($elem, 'ABS') === false;
}

print_r(array_filter($the_array, 'testABS'));
注意:这是一个人为的例子。您需要调整回调函数中的逻辑以满足您的需要。

与自定义回调一起使用

例如:

function testABS($elem) {
    return strpos($elem, 'ABS') === false;
}

print_r(array_filter($the_array, 'testABS'));
注意:这是一个人为的例子。您需要调整回调函数中的逻辑以满足您的需要。

有:

并将匹配项作为数组返回。它还有一个只返回不匹配项的标志,这可能是您想要的:返回所有没有“abs”的项。

有:


并将匹配项作为数组返回。它还有一个只返回不匹配项的标志,这可能是您想要的:返回所有不包含“abs”的项。

我理解的是您想要从数组中删除该元素。 我可以这样做

$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;

我的理解是,你想从数组中删除该元素。 我可以这样做

$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;

在这种情况下,Strpos比使用preg_match更好,因为它更快。阅读
array\u filter()
。我试过这个例子,但不起作用:
public function hasABC($elem){return strpos('ABC',$elem)!==false;}
然后
$the\u array=array\u filter($the\u array,$this->hasABC($the\u array))也是OOP透视图
'testABS'
不是一个好的回调。如果您没有提到OOP,那么
数组过滤器()
会接受回调。另请参阅代码更新。在本例中,Strpos比使用preg_match更好,因为它更快。索引处的元素。阅读
array\u filter()
。我试过这个例子,但不起作用:
public function hasABC($elem){return strpos('ABC',$elem)!==false;}
然后
$the\u array=array\u filter($the\u array,$this->hasABC($the\u array))也是OOP透视图
'testABS'
不是一个好的回调。如果您没有提到OOP,那么
数组过滤器()
会接受回调。另请参阅代码更新。这将返回包含
ABS
的精确行,我需要不包含该行的数组line@Patrioticcow在投诉之前,您应该阅读答案和手册。此返回包含
ABS
的确切行,我需要没有这个的数组line@Patrioticcow在抱怨之前,你应该阅读答案和手册