我正在使用PHP,我需要过滤一组用户图像。我需要做两个不同的过滤器:
图像数组:
Array
(
[0] => smiles.gif
[1] => kittens.jpg
[2] => biscuits.png
[3] => butthead.jpg
)
$bad_words = array('beavis','butthead','winehouse');
$bad_extensions = array('.gif','.tiff');
我希望它返回:
Array
(
[0] => kittens.jpg
[1] => biscuits.png
)
答案 0 :(得分:4)
$array = array("smiles.gif", "kittens.jpg", "biscuits.png", "butthead.jpg");
$new_arr = array_filter($array, "filter");
function filter($element) {
$bad_words = array('beavis','butthead','winehouse');
$bad_extensions = array('gif','tiff');
list($name, $extension) = explode(".", $element);
if(in_array($name, $bad_words))
return;
if(in_array($extension, $bad_extensions))
return;
return $element;
}
echo "<pre>";
print_r($new_arr);
echo "</pre>";
输出
Array
(
[1] => kittens.jpg
[2] => biscuits.png
)
我删除了。来自你的扩展
编辑:添加邪恶的跳蚤纠正
答案 1 :(得分:1)
首先,我会删除您的扩展程序列表中的句点。它只会使代码更加困难。如果您已完成此操作,则以下(未经测试的)代码应该起作用,或者至少是一个开始
$cleanArray = [];
foreach($array as $value) {
$extension = path_info($value, PATHINFO_EXTENSION);
if (in_array($extension, $bad_extensions)) {
continue;
}
foreach($bad_words as $word) {
if (strstr($word, $value)) {
continue 2;
}
}
$cleanArray[] = $value;
}
$ cleanArray应该有你想要的值。
以下是PHP在线文档中的一些方便的参考资料
答案 2 :(得分:0)
您可以在PHP中使用array_filter函数,只需编写一个执行所需过滤的函数,然后调用
array_filter($array1, "custom_filter");