【发布时间】:2014-11-02 10:23:06
【问题描述】:
在 PHP 中,是否有一个函数或其他任何东西可以删除数组中与正则表达式不匹配的所有元素。
我的正则表达式是这样的:preg_match('/^[a-z0-9\-]+$/i', $str)
我的数组是这样进来的,来自一个表单(它们实际上是标签)
来自表单的原始数组。注意:邪恶标签
$arr = array (
"french-cuisine",
"french-fries",
"snack-food",
"evil*tag!!",
"fast-food",
"more~evil*tags"
);
清理过的数组。注意,没有邪恶标签
Array (
[0] => french-cuisine
[1] => french-fries
[2] => snack-food
[3] => fast-food
)
我目前就是这样做的,但有更好的方法吗?也许没有循环?
foreach($arr as $key => $value) {
if(!preg_match('/^[a-z0-9\-]+$/i', $value)) {
unset($arr[$key]);
}
}
print_r($arr);
【问题讨论】:
-
你可以使用
array_filter。