Php 筛选值数组
我正在使用PHP,我有一个需要过滤的用户图像数组。我需要做两个不同的过滤器:Php 筛选值数组,php,arrays,filter,Php,Arrays,Filter,我正在使用PHP,我有一个需要过滤的用户图像数组。我需要做两个不同的过滤器: 查看原始数组,看看每个值是否包含我的“坏单词”数组中的值 查看原始数组中的值是否以一个“坏扩展”值结尾 图像阵列: Array ( [0] => smiles.gif [1] => kittens.jpg [2] => biscuits.png [3] => butthead.jpg ) $bad_words = array('bea
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
)
您可以在PHP中使用该函数,只需编写一个函数来执行您想要的过滤,然后调用它
array_filter($array1, "custom_filter");
首先,我要删除扩展列表中的句点。这只会使代码更加困难。如果您已经这样做了,那么下面的(未测试的)代码应该可以工作,或者至少是一个开始
$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在线文档的方便参考
编辑:添加了邪恶跳蚤修正从技术上讲,你可以返回
$element
而不是“{$name}.{$extension}”
,因为你没有对它进行任何操作。我也很确定in_array()
不会这样搜索。它确定字符串是否精确匹配。@alex in_array“如果在数组中找到指针,则返回TRUE,否则返回FALSE”@跳蚤很好,泰。可能是复制品
$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
)