防止 php 自动将 '@' 编码为 '-'

prevent php from automatically encoding '@' to '-'

我有这个代码使用电子邮件地址:

$a = "b@b.com"; 
$b = 'b%40b.com';
$c = urldecode($b);

echo ($a . ' ' . $c);

在浏览器上,两个变量都正确显示:b@b.com

但是如果我在服务器上使用 $a 或 $c 作为用户名来读取用户帐户,我会收到错误,因为它们的值为:b—b.com(删除空格)。

如果我在第一行代码后立即使用调试器检查$a 的值,则显示$a 已经具有"b& #8212;b.com" 值。所以没有额外的步骤可以对其进行编码。

请注意 —不是@符号的html代码,而是破折号(-)的代码。

我尝试了 str_replace(),但它不起作用。

PHP 版本 5.3.8

更新:这是一个调试器错误,他们说会修复。谢谢

好吧,我发现它仍然可以在控制器内部正常工作 - 尽管调试器将“@”的值显示为“—”。

但还是很奇怪。也许这只是一个调试器问题,因为其他一切看起来都很好。谢谢

更新:这是一个调试器错误,他们说会修复。谢谢