以下PHP代码:
<?php
$s = "page.com?a=1¤t";
echo $s;
输出意外:
page.com?a=1¤t
将文件编码设置为utf-8不起作用。当我将$s
设置为“page.com?a=1&curre”时,输出符合预期。
我想知道这是否是因为在我的项目中我有$url
,需要附加“&amp; currentPage = 1”。
是什么导致了这个问题?
答案 0 :(得分:4)
这是解释货币符号的entity code。如果您正在构建GET URL,可以通过各种方式解决它:
在查询值上使用urlencode()
:
$s = 'page.com?' . urlencode("a=1¤tPage=2");
将实体用于&
本身;
'page.com?a=1&currentPage=2'
或者在开头使用您的变量,因此不需要&
:
'page.com?currentPage=2&a=1'
答案 1 :(得分:1)
&符号&
需要转换为HTML特殊字符(例如使用htmlspecialchars或urlencode,或者只需输入)。您输出到HTML应如下所示:
$s = "page.com?a=1&current";
否则它们可能会与HTML实体发生冲突,如您的示例所示。 ¤
的HTML实体为¤
,由于我不知道的原因,即使没有结束;
,这些实体也会在HTML中匹配。编辑:关于为什么以及何时发生这种情况,关键字是历史原因,read here。
答案 2 :(得分:0)
问题是因为&amp; curren是¤符号的短代码。所以每当你把&amp; current 放在¤t时。
解决这个问题你可以使用urlencode函数
$s = urlencode("page.com?a=1¤t");
echo $s;
希望这能解决您的问题。
答案 3 :(得分:0)
如果要在屏幕上显示字符串,则只需要用&
替换所有&字符就可以在屏幕上显示。实际不要像这样替换网址字符串中的字符,否则网址将无法正常工作。
例如
printf( 'this is my string: %s' , str_replace('&', '&', $yourFullString) );
答案 4 :(得分:0)
简单的解决方案是将 &
转换为编码格式,如 &
。这对我有用。这是例子
URL."reference=1&currency=";