2

我有一个输入框,用 php 会回显输入的名称。问题是当用户按下空格时,它会回显空白字符。我已经搜索并没有找到绝对答案。我知道!empty如果在输入字段中有absoutely anthing但如果有空格则应该使用null。

如果输入中有空格,如何避免得到回声?

if (!empty($name['name']) || null ) {
    echo 'Your name is '.$name;

}
{

//do nothing 

}
4

3 回答 3

3

如果未设置、null、空字符串、布尔值 false 或 0,则对函数的调用empty()将为 true。我仍然喜欢在条件语句中避免繁重的逻辑......在测试之前拉出修剪和准备字符串。

$nameString = empty($name['name'])?null:trim($name['name']);
if(!empty($nameString){
    //go to town here
}

为了提前安抚狂热分子,我还必须补充一点,您应该在打印之前转义任何用户输入。这样你就可以防止 XSS。为了更安全添加试试这个:

$nameString = empty($name['name'])?null:trim($name['name']);
$nameString = htmlentities($nameString, ENT_QUOTES);
if(!empty($nameString){
    //go to town here
}

但是,附带说明...该htmlentities()调用不能防止 SQL 注入,因此如果此数据进入数据库,您将不得不做更多的工作——因为您的问题并未表明您正在做任何其他事情打印到屏幕上,我们可以将 SQL 注入讨论推迟一天。

于 2012-07-15T17:33:28.993 回答
0

您想检查是否有空格,您可能需要这样做:

if ($name['name'] != null && trim($name['name']) != "" && !strpos(trim($name['name']), " "))
{
    // work with $name['name']
}
else
{
    // nothing
}
于 2012-07-15T17:23:27.577 回答
0

小心使用empty(),如果用户输入'0',它将返回TRUE。

您可能想使用 strlen()

于 2012-07-15T17:36:44.733 回答