PHP echo 自动替换“&”与“&”
我正在制作一个 PHP 函数,将 $_GET 数组转换为 URL 字符串格式。
例如 Array('key1'=>'value1', 'key2'=>'value2')
转换为: ?key1=value1&key2=value2
我认为该函数正在正确工作。但是当我回显结果时,在 HTML 页面中,“&
”的所有实例都被“&
”替换。因此,浏览器中的转换最终为 ?key1=value1&key2=value2
。
这是我的 PHP 函数:
/**
*
* @param Array $GETArray Pass in the associative $_GET array here.
* @return string The $GETArray converted into ?key=value&key2=value2&... form.
*/
function strGET($GETArray) {
if (sizeof($GETArray) < 1) {
return '';
}
$firstkey = key($GETArray);
$firstvalue = $GETArray[$firstkey];
$sofar = "?$firstkey=$firstvalue";
array_shift($GETArray);
foreach ($GETArray as $key => $value) {
$sofar .= '&'."$key=$value";
}
return $sofar;
}
I'm making a PHP function that converts a $_GET array into the URL string format..
e.g. Array('key1'=>'value1', 'key2'=>'value2')
gets converted to: ?key1=value1&key2=value2
I think the function it's doing its work correctly. But when I echo the result, in the HTML page all instances of "&
" are replaced by "&
". So, the conversion in the browser ends up being ?key1=value1&key2=value2
.
Here's my PHP function:
/**
*
* @param Array $GETArray Pass in the associative $_GET array here.
* @return string The $GETArray converted into ?key=value&key2=value2&... form.
*/
function strGET($GETArray) {
if (sizeof($GETArray) < 1) {
return '';
}
$firstkey = key($GETArray);
$firstvalue = $GETArray[$firstkey];
$sofar = "?$firstkey=$firstvalue";
array_shift($GETArray);
foreach ($GETArray as $key => $value) {
$sofar .= '&'."$key=$value";
}
return $sofar;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
回避你的问题,但使用
http_build_query
。它正是这样做的。另外,您的函数不会对任何内容进行 HTML 转义。 PHP 本身也不会。你一定是在某个地方逃避它。顺便说一句,这是正确的。 & 符号应该被转义。
Sidestepping your question, but use
http_build_query
. It does exactly that.Also, your function does not HTML-escape anything. Neither does PHP by itself. You must be escaping it somewhere. Which, BTW, is correct. Ampersands should be escaped.
使用 http://us.php.net/manual/en/ function.http-build-query.php 函数代替。
Use http://us.php.net/manual/en/function.http-build-query.php function instead.