2010-05-17 46 views
1

我正在編寫一些代碼,以便在使用AJAX驗證表單時向用戶提供實時反饋。我已經檢查了長度,如果該字段是空的。現在我想讓它清理用戶輸入,並且如果sanatized輸入與用戶原始輸入不同,那麼告訴他們哪些字符不被允許。通過AJAX向用戶報告已過濾的用戶輸入

我到目前爲止編寫的代碼除了一些字符以外最着名的符號'£'沒有響應。我認爲它涉及到json_encode及其編碼。

下面是代碼:

$user_input = 'asdfsfs£'; 
    $strip_array = str_split(strip($user_input)); 
    $orig_array = str_split($user_input); 
    $diff_array = array_diff($orig_array,$strip_array); 
    $diff_str = implode(', ',$diff_array); 
    $final = json_encode($diff_str); 

    function strip($input){return htmlentities(strip_tags($input),ENT_QUOTES);} 

希望有人能想出一個解決方案。

+0

我的猜測是字符串中存在unicode字符。 PHP不是unicode意識到的,所以它會搞亂字符串 - >數組轉換。不確定問題究竟在哪裏,或者如何解決。 – 2010-05-17 14:45:30

+0

是的,我認爲它與此有關..我注意到,在PHPED中,如果我調試它並查看字符串的內容,則總是在前面有一個奇怪的'A'字符。 – JimBo 2010-05-18 10:23:06

回答

0

如果這是通過AJAX完成,那麼你將需要編寫一個JavaScript函數來完成這一點。

讓服務器在您的HTML返回格式

{ 
    original: 'asdfsfs£', 
    edited: 'asdfsfs', 
    illegalChars: ['£'] 
} 

的JSON對象,你應該有空元素旁邊的表單輸入字段,您可以輸出形式驗證消息

<input type="text" id="myTextField" /> 
<span id="myTextFieldLabel" /> 

現在讓你的javascript根據驗證數據更新myTextFieldLabel組件的內容

Sean

+0

也許我沒有讓自己清楚,Ajax在驗證方面工作得很好。問題是我用於檢查非法字符(上面發佈)的代碼返回「或」的正確結果,但對於'£'它不返回任何內容。我相信這是與文本編碼不是UTF-8在它被處理之後。 – JimBo 2010-05-18 10:21:02