我试图解码电子邮件,因为它已编码在URL中,但urldecode()
函数不会解码它。
我也尝试了rawurldecode()
,然后尝试先自己编码,然后解码,但它仍然像 %40 而不是 @ 符号一样编码。
这是代码:
$isValid = ! User::emailExists(urldecode($_GET['email']));
我得到这样的东西:
http://localhost/account/validate-email?email=some_email%40gmail.com
我做了一个简单的测试:
<?php
$email = "some_email%40example.com";
var_dump($email);
var_dump(urldecode($email));
var_dump(rawurldecode($email));
(预期的(输出为:
字符串(24( "some_email%40示例.com">
字符串(22( "some_email@example.com">
字符串(22( "some_email@example.com">
因此,解码按预期工作。
难道您正在查看一个示例,其中您认为是%40
实际上是其他东西,例如包含 unicode 字符的序列,该字符看起来只与您期望的字符相似,但实际上却有所不同?
$_GET 会自动解码,确定您首先正确编码了 url?
还请记住,您还应该注意您放入的 HTML 属性的 url 编码:
可能是您正在双重编码和/或错误编码!