我有一个输入框,与PHP会回显输入的名称。问题是,当用户按空间时会回显空白字符。我搜查了并没有找到绝对的答案。我知道使用!empty
如果在输入字段中存在绝对的空间,但是如果有一个空格应该是空的。PHP:空/空,如果逻辑查询
如何避免在输入中存在空格时出现回显?
if (!empty($name['name']) || null) {
echo 'Your name is '.$name;
}
{
//do nothing
}
我有一个输入框,与PHP会回显输入的名称。问题是,当用户按空间时会回显空白字符。我搜查了并没有找到绝对的答案。我知道使用!empty
如果在输入字段中存在绝对的空间,但是如果有一个空格应该是空的。PHP:空/空,如果逻辑查询
如何避免在输入中存在空格时出现回显?
if (!empty($name['name']) || null) {
echo 'Your name is '.$name;
}
{
//do nothing
}
调用该函数empty()
将是真实的,如果它没有设置,空,空字符串,布尔假,或0.仍然我喜欢在条件中避免沉重的逻辑...在测试之前拉出修剪并准备字符串。
$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注入讨论。
非常好解释!我有困难缠绕空,空,修剪等,但现在更清晰。但是,我会将它们存储在数据库中,并会考虑避免sql注入。 – CodingWonders90 2012-07-15 17:57:52
@cholomanCoding只是不直接在数据库中存储你的htmlentity转义字符串...从原始创建第二个字符串保护和存储,否则你会在你的数据库列中得到一堆垃圾...... – Ray 2012-07-15 18:02:01
你要检查是否有空间,你可能会想这样做:
if ($name['name'] != null && trim($name['name']) != "" && !strpos(trim($name['name']), " "))
{
// work with $name['name']
}
else
{
// nothing
}
使用empty()时要小心,如果用户输入'0',它将返回TRUE。
您可能需要使用
它通常建议使用['TRIM()'](http://php.net/trim)像这些 – jprofitt 2012-07-15 17:22:48
投入使用的strlen()'修剪($名称[ 'name'])' – hjpotter92 2012-07-15 17:24:15