使用PHP ..
这就是我所拥有的......我将解释整个事情,也许有人可以帮我解释逻辑,并指出我正确的方向。
我有一个我正在处理的邮件系统。在cc部分中,我允许用户用分号分隔值,如:1; 2; 3; 4 ...
当这些值传递给我的函数时,我使用explode将它们放入数组中。我想做的是先检查一下。我想首先确保格式正确并且每个值都正确分隔。如果没有,我应该显示错误。完成后,我想确保每个数字实际上都有效。我可以查询数据库,将reslts放入一个数组,并考虑使用in_array()函数来验证这一点,但我不确定它是否可行。有人可以帮我解决这个问题吗?
感谢。
编辑:
在CSV值列表中检测虚假值的最佳方法是什么?
答案 0 :(得分:3)
为了验证每个数字是否正确分隔,您需要检查答案中是否没有空格。所以这样的事情应该有效:
$text = trim($id); if(strpos(" ", $id) !== false) { //error }
接下来,要检查值,这很简单
if(!in_array($id, $database_ids)) { // error }
最后,如果您只使用数值,请检查ID是否为数字
if(!is_numeric($id)) { //error }
要合并,将其包装成数组
foreach($exploded_array as $key => $id) { $id = trim(id); if(!is_numeric($id)) { //error } if(strpos(" ", $id) !== false) { //error } if(!in_array($id, $database_ids)) { // error } }
我希望代码在获得变量时非常自我解释,但如果你需要我解释更多,请随意提问。
答案 1 :(得分:0)
您正在寻找类似的内容:
foreach ($array as $value) {
//do checking here
}
答案 2 :(得分:0)
array_filter可以是一种选择。
答案 3 :(得分:0)
正如他们所建议的那样,这是一个依赖array_filter()
:
<?php
function checkValue($value)
{
$id = trim(id);
if(!is_numeric($id))
{
return false;
}
if(strpos(" ", $id) !== false)
{
return false;
}
if(!in_array($id, $database_ids))
{
return false;
}
return true;
}
$values = '1;2;3;4';
$values_extracted = explode(';', $values);
if(count($values) == count(array_filter($values_extracted), 'checkValue'))
{
// Input was successfully validated
}
?>