我有一點,檢查2個$ _ GET變量用的preg_match代碼。它還在數據庫中查找一個變量值。問題在於,當我調用變量時,URL編碼的電子郵件地址和@符號被替換爲%40不會變成可讀的文本。
所以,如果我調用$ _GET [「電子郵件」]中顯示的值是有人%40example.com而應該是[email protected]
我理解$ _ GET變量都會自動解碼,但它無法正常工作爲了我。這個問題伴隨着在這個域上安裝SSL。它可能與此有關嗎?
這裏是我的代碼:
if (isset($_GET['Email']) && preg_match('/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/', $_GET['Email'])) {
$Email = $_GET['Email'];
}
的不是[驗證方式](http://stackoverflow.com/questions/12026842/how-to-validate-an-email-地址中的PHP/12026863#12026863)emailaddresses,因爲:https://emailtester.pieterhordijk.com/test-pattern/Nzc – PeeHaa 2014-08-29 14:01:47
我從@PeeHaa評論表示贊同我會強烈建議使用'filter_var($ _ GET ['電子郵件'],FILTER_VALIDATE_EMAIL)' – 2014-08-29 14:03:56
你正在處理輸入表單嗎?你是否在使用'multipart/form-data'內容類型?您需要'application/x-www-form-urlencoded'內容類型來向PHP發送內容需要解碼的信號。 – 2014-08-29 14:07:37