2011-07-26 39 views
0

我對PHP相當陌生,並且正在爲我的站點設置一個「成員區」,其地址爲this tutorial。頁面底部附近的代碼似乎存在問題。嘗試設置無效字符數組的語法錯誤

當試圖從用戶名字段中挑出無效字符時,數組$ junk被設置。

$junk = array('.' , ',' , '/' , '\' , '`' , ';' , '[' , ']' , '-', '_', '*', '&', '^', 
'%', '$', '#', '@', '!', '~', '+', '(', ')', '|', '{', '}', '<', '>', '?', ':', '"', '='); 

這段代碼爲我返回一個語法錯誤。

現在,我的第一個想法是,'#'或'('和')'導致了問題,因爲它們通常用於html和php。錯誤仍然返回,他們被刪除。

我是新來的PHP,所以它很可能只是一些小的語法錯誤,我錯過了。任何輸入都會很棒。謝謝!

編輯:另外,如果有一個更簡單的方法做到這一點,請讓我知道!

+0

根據要踢出哪個字符,正則表達式可能更簡單。 (另外,爲什麼你需要從用戶名中刪除這些字符?我想不出任何非人爲的理由。) – zneak

回答

0

有一個更簡單的方法來做到這一點,正則表達式。 如果您想將用戶名設置爲只接受字母數字字符,那麼它就是

$ user = preg_replace(「/ [^ 0-9a-zA-Z] + /」,「」,$ user);

表達式本質上說,用「」替換任何不是0-9,a-z,A-Z的東西。如果你想允許「@」,「。」 (期), 「 - 」 和 「_」 符號:

 
$user = preg_replace("/[^0-9a-zA-Z\@\.\-\_]+/", "", $user); 

正則表達式是一個非常強大的工具。它們可以在大多數語言中使用,包括javascript和PHP。所以值得花時間去學習它們。

1

對於 '\' 字符,你需要把它寫這樣

'\\' 
1

反斜槓需要轉義:'\\'。這是因爲\'給了你一個字面的撇號,否則你不能進入一個單引號字符串。

0

對於較小的數組,創建一個字符串,然後調用str_split將其作爲一個字符數組。

$junk = str_split('.,/\\`;[]-_*&^%S#@!~+()|{}<>?:"=') 

個人而言,我會使用的字符以下順序

~`[email protected]#$%^&*()-_+={}[]\|;:'",.<>/? 

因爲這是他們如何在我的鍵盤。但這只是一個小問題。我知道原始字符串中缺少'(單引號)。

驗證輸入的更好方法涉及正則表達式。