PHP创建一个简单的if-isset-empty函数

Kae*_*ael 6 php post function simplify isset

我正在为打印机公司编写工作表应用程序.我的表格泛滥成灾.对于每个输入字段,我必须检查$_POST变量是否已设置,以及是否,因此回显该值.(如果出现某些错误,例如在验证错误之后,用户不应重新键入整个表单)

示例代码:

if(isset($_POST['time'])&&!empty($_POST['time'])){echo $_POST['time'];}
Run Code Online (Sandbox Code Playgroud)

我不得不实施这一百次.所以我试图弄清楚某种功能,使这简单易读.

像这样的东西:

function if_post_echo($key, $default = "") {
    if(isset($_POST[$key])&&!empty($_POST[$key])){
    echo $_POST[$key];   
    }else{
    echo $default;   
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不会奏效.我试图传递$_POSTfor $key变量,如下所示:

if_post_echo($_POST['time'])

function if_request_echo($key, $default = "") {
        if(isset($key)&&!empty($key)){
        echo $key;   
        }else{
        echo $default;   
        }
    }
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

function if_request_echo($key, $default = null) {
    return isset($_REQUEST[$key])&&!empty($_REQUEST[$key]) ? $_REQUEST[$key] : $default;
}
Run Code Online (Sandbox Code Playgroud)

没有任何合理的结果.

问题:

我如何伪造一个查找必要$_POST变量并返回它的函数,或者如果它未设置则返回一个空字符串.而且是有办法做到这一点$_GET$_REQUEST,太?(或者只是复制?)

Tre*_*non 7

您的PHP测试功能:

<?php
function test_req($key, $default = '') {
    if(isset($_REQUEST[$key]) and
       !empty($_REQUEST[$key])) {
        return $_REQUEST[$key];
    } else {
        return $default;
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

然后在您的表单HTML:

<input name="my_field" value="<?php echo htmlentities(test_req('my_field')); ?>" />
Run Code Online (Sandbox Code Playgroud)

$_REQUEST(链接)是一个PHP超级全局,包含POST($_POST)和GET($_GET)请求参数.

如果您只想捕获POST请求参数,那么它将是:

<?php
function test_req($key, $default = '') {
    if(isset($_POST[$key]) and
       !empty($_POST[$key])) {
        return $_POST[$key];
    } else {
        return $default;
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

例如.


mar*_*rio 6

如果你有大量的字段,我建议你也使用一组默认值:

$defaults = array(
    "time" => "default",
    "name" => "enter name here",
    "text..." => "...",
);

$fields = array_filter($_POST) + $defaults;
Run Code Online (Sandbox Code Playgroud)

$fields然后将包含具有POST数据或预设默认值的表单值列表.没有,请看?

array_filter手册页特别是:如果没有提供回调,则将删除所有输入等于FALSE的条目.在某种程度上解释了这个解决方案背后的工作.