字符串内爆中的意外符号

时间:2012-10-30 11:56:56

标签: php

我正在使用implode创建一个查询字符串但是它中出现了一个意外的符号,我不确定它来自哪里

如果有任何人有任何见解,将不胜感激。

$url = "https://mypay.com/billing/signup.cgi";



$key = "11";
$key .= "11";
$key .= "GBP";
$key .= "QQDNfAHlC2WEEfhfhFFdhbdf";

$variables[] = "?formDigest=".md5($key);
$variables[] = "clientAccnum=1111";
$variables[] = "clientSubacc=1111";
$variables[] = "formName=108ck";
$variables[] = "formPrice=11";
$variables[] = "formPeriod=11";
$variables[] = "currencyCode=GBP";


$url .= implode("&", $variables);

echo $url;

字符串

https://bill.ccbill.com/jpost/signup.cgi?formDigest=df03f2b103f79bd5de34c6cfea405ec5&clientAccnum=1111&clientSubacc=1111&formName=108ck&formPrice=11&formPeriod=11¤cyCode=GBP

注意currencyCode应该是¤符号。

感谢帮助人员!

2 个答案:

答案 0 :(得分:4)

implode效果很好。

这里的问题是您输出的是HTML文本(echo $url),但是您没有使用htmlspecialchars正确编码HTML特殊字符。

当浏览器看到子字符串&currencyCode=GBP时,它会猜到你必须意味着¤Code=GBP; ¤是货币符号的HTML entity,因此您在屏幕上看到的就是。

将代码更改为echo htmlspecialchars($url)以查看即时差异;要获得完全正确的解决方案,请注意并为htmlspecialchars 的前三个参数提供正确的值。

答案 1 :(得分:-1)

& curren ”将以这种方式显示...将变量名称“ currencyCode ”更改为其他内容并且可以正常工作

问候

Sudeep