我使用带有file_get_contents的网页生成一个带有URL的数组,我想删除条目(密钥和值),如果它们包含特定数据。
例如:
[0] = 'http://somesite.com'
[1] = 'http://someothersite.com/article/id/55/file.pdf'
[2] = 'http://someothersite.com/article/id/56/file2.pdf'
[3] = 'javascript:void(0)'
[4] = 'mailto:info@somesite.com'
我想删除条目的
http://somesite.com
javascript:void(0)
mailto:info@somesite.com
因为我只需要带有.pdf文件的URL。
我该怎么做?
答案 0 :(得分:2)
你可以使用数组过滤器(注意这个语法适用于php 5.3 +)
$filtered = array_filter($array, function ($a){ return preg_match ('/.pdf$/', $a); });
答案 1 :(得分:0)
$array = array('http://somesite.com','http://someothersite.com/article/id/55/file.pdf','http://someothersite.com/article/id/56/file2.pdf','javascript:void(0)','mailto:info@somesite.com');
for($i=0; $i<=count($array)+1 ; $i++)
{
if(end(explode('.',$array[$i])) != "pdf" )
{
unset($array[$i]);
}
}
答案 2 :(得分:0)
试试这个!!!!
$haystack = array (
'0' => 'http://somesite.com',
'1' => 'http://someothersite.com/article/id/55/file.pdf',
'2' => 'http://someothersite.com/article/id/56/file2.pdf',
'3' => 'javascript:void(0)',
'4' => 'mailto:info@somesite.com'
);
$matches = preg_grep ('/pdf/i', $haystack);
//print_r ($matches);
foreach($matches as $k=>$v):
echo $matches[$k]."<br/>";
endforeach;
<强>文档强> preg_grep
答案 3 :(得分:0)
希望这会有所帮助:
$sites[0] = 'http://somesite.com';
$sites[1] = 'http://someothersite.com/article/id/55/file.pdf';
$sites[2] = 'http://someothersite.com/article/id/56/file2.pdf';
$sites[3] = 'javascript:void(0)';
$sites[4] = 'mailto:info@somesite.com';
echo '<pre>'.print_r($sites, true).'</pre>';
//loop through your array of items/sites
foreach($sites as $key=>$value){
//remove whitespace
$value = trim($value);
//get last 4 chars of value
$ext = substr($value, -4, 0);
//check if it is not .pdf
if($ext != '.pdf'){
//unset item from array
unset($sites[$key]);
}
}
echo '<pre>'.print_r($sites, true).'</pre>';
答案 4 :(得分:0)
array_filter
始终是一个选项,但如果您想删除特定值,则另一个优秀的候选人是array_diff
:
$remove = [
'http://somesite.com',
'javascript:void(0)',
'mailto:info@somesite.com',
];
$filtered = array_diff($array, $remove);