Php 是否可以从表单中筛选select值数组?
假设我有这个表格:Php 是否可以从表单中筛选select值数组?,php,Php,假设我有这个表格: <form method="post"> <select name="s[]" multiple="multiple"> <option value="12345678">One</option> <option value="a7e6b65e">Two</option> <option value="ad2445f7">Three</option>
<form method="post">
<select name="s[]" multiple="multiple">
<option value="12345678">One</option>
<option value="a7e6b65e">Two</option>
<option value="ad2445f7">Three</option>
<option value="998d64fe">Four</option>
</select>
<input type="submit" value="GO">
</form>
有更简单的方法吗?您应该已经在数组中提供了所有可能的选项值。 只需验证在post中检索到的选项是否在数组中定义即可
if (!in_array($o, $options)) {
//Throw some validation error here
}
是,请参见阵列过滤器:
在PHP5.4中,您可以
$s=$_POST['s'];
if (!$s || !is_array($s)
$s=array();
else
$s=array_filter($s, function ($value) { return preg_match('/regex/',$value); });
多亏了Bram和b7kich,他们都给了我一部分我将使用的解决方案,因为过滤器函数在这里似乎没有帮助 有一个可能值列表的想法很好(doh!),通过查看
array.*
函数,我发现array.\u intersect
,它可以过滤掉任何“无效”值
$valid = array('12345678','a7e6b65e','ad24d5f7','998d64fe');
if (!isset($_POST['s']) || !($s = $_POST['s']) || !is_array($s))
$s_clean = array();
else
$s_clean = array_intersect($s, $valid);
$valid = array('12345678','a7e6b65e','ad24d5f7','998d64fe');
if (!isset($_POST['s']) || !($s = $_POST['s']) || !is_array($s))
$s_clean = array();
else
$s_clean = array_intersect($s, $valid);