下面的PHP代码:PHP “&CURREN” 字符串变成奇怪的符号
<?php
$s = "page.com?a=1¤t";
echo $s;
输出意外:
page.com?a=1¤t
设置文件编码成UTF-8没有工作。当我将$s
设置为“page.com?a = & curre”时,输出如预期。
我想知道这是否是因为在我的项目中我有$url
,它需要附加“& currentPage = 1”。
是什么导致了这个问题?
下面的PHP代码:PHP “&CURREN” 字符串变成奇怪的符号
<?php
$s = "page.com?a=1¤t";
echo $s;
输出意外:
page.com?a=1¤t
设置文件编码成UTF-8没有工作。当我将$s
设置为“page.com?a = & curre”时,输出如预期。
我想知道这是否是因为在我的项目中我有$url
,它需要附加“& currentPage = 1”。
是什么导致了这个问题?
这就是所解释货币符号的entity code。如果你正在构建的GET网址,你可以以不同的方式解决这个问题:
使用urlencode()
您的查询值:
$s = 'page.com?' . urlencode("a=1¤tPage=2");
使用&
本身的实体;
'page.com?a=1&currentPage=2'
或者说不需要&
在开始使用你的变量:
'page.com?currentPage=2&a=1'
谢谢!我的项目现在可以继续 – user1712263
问题是因为& curren是¤符号的短代码。所以只要你把&目前它把它作为¤t。
解决这个你可以使用进行urlencode功能
$s = urlencode("page.com?a=1¤t");
echo $s;
希望这将解决您的问题。
'&curren;'是一个html实体,但不是'&curren' –
,但它以某种方式将其转换为无**; ** – reza
&符号&
需要转换成HTML特殊字符(例如使用htmlspecialchars或urlencode或简单地输入)。您的输出转换成HTML应该是这样的:
$s = "page.com?a=1&current";
否则,他们可能会用HTML实体碰撞,因为在你的例子发生。 ¤
的HTML实体为¤
,由于我未知的原因,这些实体在HTML中甚至没有关闭;
。编辑:至于为什么和何时发生这种情况,关键字是历史原因,read here。
输出就可以了。浏览器视图&curren; :-)。 – Eugen
对不起,但我不能重现这个问题,也许你应该添加其他元素到你的问题。 –
@Eugen确实如此,但如果在回应页面链接时发生这种情况,事情会变得混乱。 – sidyll