目前,我將地址限制爲100個字符,沒有關於它必須組成的規則。標點符號,數字,字母;都歡迎。什麼是驗證物理商業/住宅地址的正確方法?
我使用strip_tags
將地址保存到我的數據庫(準備語句)。當使用$this->escape()
(Zend Framework)將其回顯到頁面時,我使用$this->escape()
(Zend Framework)。
我不想發瘋,但我認爲我需要更嚴格一點。我錯過了什麼?
目前,我將地址限制爲100個字符,沒有關於它必須組成的規則。標點符號,數字,字母;都歡迎。什麼是驗證物理商業/住宅地址的正確方法?
我使用strip_tags
將地址保存到我的數據庫(準備語句)。當使用$this->escape()
(Zend Framework)將其回顯到頁面時,我使用$this->escape()
(Zend Framework)。
我不想發瘋,但我認爲我需要更嚴格一點。我錯過了什麼?
如果這些地址是美國地址,則應使用美國郵政服務的API查找並標準化地址。
+1表示授權。對於低容量要求,您可以使用其郵政編碼查找手動檢查地址。 http://zip4.usps.com/zip4/welcome.jsp但根據我的經驗,USPS在地址變更上落後於地方政府。不是很多,但這對一些應用程序有所不同。 –
要建立在丹的回答,我想提出的是對你最好的辦法是進行一個簡單的請求一個地址驗證服務,如SmartyStreets' LiveAddress(它是完全免費的,使用官方USPS數據)。我實際上是爲SmartyStreets工作的,所以我一次又一次地經歷了這些循環。
我閱讀了關於你的問題的評論,儘管它看起來不是標準化地址的問題,但它真的到了最後。用戶可以輸入不好的數據 - 如果他們故意這樣做,確實告訴你一些事情,就像Catcall提到的 - 並且你想確保它是正確和完整的。經CASS認證的供應商可以提供這項服務,而且我認爲最容易/最實惠的供應商是LiveAddress。
沒有正確的表達方式可以做到這一點,甚至USPS API也有其主要缺點/侷限性,儘管它具有權威性(例如,它的傳遞能力並不總是很清楚)。
當您驗證任何輸入,即使是地址,其有效性也會建立用戶的信任,以便他們知道您關心他們與您的交互。
開車去看看它是否存在。 – alex
爲什麼'strip_tags()'在插入數據庫之前?只是轉義依賴於輸出上下文的特殊字符。 – alex
我不知道任何,但你可能想要找到一個標準化地址輸入的庫 – Ben