1

我有这种格式的网址:

http://site.com/index.php?title=[SOME_UNICODE_TITLE]&id=[ID]&type=[TYPE]

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

如何htmlspecialchars在不转换 URL 特定字符(例如&,、=...)的情况下在 URL 上使用?

4

2 回答 2

3

恕我直言,您应该只urlencode()用于 URL,因为这就是它的用途。如果你不能/不想使用它,你总是会得到一个完整的 URI。您可以在编码之前解析 if :

$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

示例:http ://codepad.viper-7.com/lIFiHB

于 2012-08-26T11:54:44.237 回答
0

如果您只是对数据进行编码,而不是将 htmlspecialchars 应用于整个 url,则建议仅将其仅应用于内容。这样,您将使用数据中的特殊字符保存 url

于 2012-08-26T11:48:08.573 回答