我有以这种格式的网址:
http://site.com/index.php?title= [SOME_UNICODE_TITLE]和ID = [ID]&安培;类型= [类型]
当我尝试在此URL上使用htmlspecialchars
来编码unicode标题时,该函数也会编码&
;所以它会&
,因此变量名id
会转换为ampid
!
所以我无法从代码中读取它。
如何在不转换特定于网址的字符(例如htmlspecialchars
,&
,...)的情况下在网址上使用=
?
答案 0 :(得分:3)
恕我直言,你应该只使用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
}
http://php.net/manual/en/function.parse-str.php
http://www.php.net/manual/en/function.parse-url.php
答案 1 :(得分:0)
如果您只是对数据进行编码,而不是将htmlspecialchars应用于整个网址,则建议仅将其应用于内容。这样你就可以使用数据中的特殊字符来保存网址