我有一個輸入框,與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