[英]How to echo filter used in filter_var
首先,我將展示該功能:
function validate($data, $filter){
if(!filter_var($data, $filter))
{
return 'Filter used:'.$filter;
}
else
{
return 'good';
}
}
當我使用此功能時,它將如下所示:
$email = 'hello@hello.org';
echo validate($email, FILTER_VALIDATE_EMAIL);
輸出為:
使用的過濾器:274
問題是我希望輸出為:
使用的過濾器:FILTER_VALIDATE_EMAIL。
要獲取實際的常量名稱,您可能需要將過濾器作為字符串傳遞,並使用constant()
:
function validate($data, $filter){
if(!filter_var($data, constant($filter)))
{
return 'Filter used:'.$filter;
}
else
{
return 'good';
}
}
然后像這樣使用它:
echo validate($email, 'FILTER_VALIDATE_EMAIL');
我不得不考慮多個標志,我很無聊。 這可能會變得很混亂,但是對於簡單的過濾器,它可以工作:
function validate(){
$args = func_get_args();
$data = array_shift($args);
$con_args = array_map('constant', $args);
array_unshift($con_args, $data);
if(!call_user_func_array('filter_var', $con_args))
{
return 'Filter used:'.implode(', ', $args);
}
else
{
return 'good';
}
}
echo validate($url, 'FILTER_VALIDATE_URL', 'FILTER_FLAG_PATH_REQUIRED');
FILTER_VALIDATE_EMAIL
是設置為274
的命名常量 。 您的validate()
函數永遠不會看到“ FILTER_VALIDATE_EMAIL”,它只會看到274
傳遞給其中,並將274
傳遞給filter_var()
,后者知道如何處理它。
對於開發人員而言,常量的優點之一是:通過使用具有自動完成功能和代碼智能的IDE,您可以確定變量的名稱,從而避免可能的輸入錯誤。
查看@AbraCadaver的答案,為您的查詢提供優雅的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.