我在尋找一個php函數或庫或建議,可以驗證破損的表格輸入值,當客戶複製&粘貼破損utf8字符串。驗證破碎的複製粘貼用戶輸入
場景:
- 客戶被要求在
- 輸入街道名稱他打開第三方破頁,他被存儲地址
- 副本破UTF8字符串(見例)
- 將此字符串粘貼到輸入字段並單擊提交
S o在服務器端,我收到「正確」的有效utf8值。
有沒有辦法捕捉到這一些如何讓我可以捕捉它並顯示錯誤信息?
測試的例子:
- 「ATA€™的â€~em」
- 「Bokowski」
我在尋找一個php函數或庫或建議,可以驗證破損的表格輸入值,當客戶複製&粘貼破損utf8字符串。驗證破碎的複製粘貼用戶輸入
場景:
S o在服務器端,我收到「正確」的有效utf8值。
有沒有辦法捕捉到這一些如何讓我可以捕捉它並顯示錯誤信息?
測試的例子:
由於沒有通用的方法來確定值是否有誤,我最終匹配了正則表達式[A-Za-z0-9 \ - 。],並向用戶顯示警告消息(如果不匹配)。
(由@soheyl建議)
起初一個UTF-8
字符串不能被打破。該字符串可以有非UTF-8字符,它看起來像是「破碎」,而它只是一種不同的編碼。
PHP有一個函數來檢查什麼樣的編碼用於給定的字符串:
string mb_detect_encoding (string $str [, mixed $encoding_list = mb_detect_order() [, bool $strict = false ]])
來源:http://php.net/manual/en/function.mb-detect-encoding.php。
但它只檢查給定字符串是什麼類型的編碼,所以你只能檢查是否使用正確的編碼。
希望這會有所幫助。
感謝您的回答,但在這種情況下,它始終是UTF-8,因爲它來自有效的utf8編碼網站。 – wormhit
問題,要求我們建議還是找一本書,工具,軟件庫,教程或其他異地資源是題外話堆棧溢出,因爲他們往往以吸引自以爲是的答案,垃圾郵件。相反,請描述問題以及到目前爲止解決問題所做的工作。 – Lexi
您可以使用preg_match來驗證輸入是否有效!你可以將它與字母和數字進行比較,例如:az AZ 0-9 :) – Soheyl
如果他們實際上*粘貼單詞「At」的「em」,那麼他們實際上正在粘貼單詞「Atâ」 €™'em「(就像我現在在這裏做的那樣)。沒有什麼是「破碎」的,它只是不是你想要的角色(儘管我*在這個評論中希望他們在這裏)。所以......這有點問題,因爲沒有明顯的*正確*答案。當*是*什麼東西壞了,當*不是*它...? – deceze