Php 在URL上使用htmlspecialchars

Php 在URL上使用htmlspecialchars,php,url,encoding,html-entities,htmlspecialchars,Php,Url,Encoding,Html Entities,Htmlspecialchars,我有以下格式的URL: http://site.com/index.php?title=[SOME\u UNICODE\u TITLE]&id=[id]&type=[type] 当我尝试在此URL上使用htmlspecialchars对unicode标题进行编码时,函数也会对&进行编码;因此它将是&,因此变量名id将转换为ampid! 所以我无法从代码中读取它 如何在URL上使用htmlspecialchars,而不转换特定于URL的字符(例如&,=,…) 如果u wana只是对数据进行编

我有以下格式的URL:

http://site.com/index.php?title=[SOME\u UNICODE\u TITLE]&id=[id]&type=[type]

当我尝试在此URL上使用
htmlspecialchars
对unicode标题进行编码时,函数也会对
&
进行编码;因此它将是
&
,因此变量名
id
将转换为
ampid
! 所以我无法从代码中读取它


如何在URL上使用
htmlspecialchars
,而不转换特定于URL的字符(例如
&
=
,…)

如果u wana只是对数据进行编码,而不是将htmlspecialchars应用于整个url,则建议仅将其应用于内容。通过这种方式,您将使用数据中的特殊字符保存url,您只需对url使用
urlencode()
,因为这就是它的用途。如果您不能/不想使用它,并且总是得到完整的URI。您可以在对其编码之前分析:

$uriParts = parse_url($fullUri);
$queryParts = array();
parse_str($uriParts['query'], $queryParts);

foreach($queryParts as $name => $value) {
    $queryParts[$name] = htmlspecialchars($value);

    // don't know whether you want to encode the key too
}


示例:

那好吧是的,这就是
htmlspecialchars
所做的。用例是什么?你想逃避它做什么?我正在使用其他人的类返回整个URL,而不是它的部分!我只有整个URL。