1

私はこの形式のURLを持っています:

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

htmlspecialcharsこのURLでUnicodeタイトルをエンコードしようとすると、関数もエンコードし&ます。したがって&amp、変数名は!idに変換されます。ampidだから私はそれをコードから読み取ることができません。

URL固有の文字(たとえば、、、...)htmlspecialcharsを変換せずにURLで使用するにはどうすればよいですか?&=

4

2 に答える 2

3

私見ではurlencode()、URLにのみ使用する必要があります。これは、そのために作成されたものだからです。使用できない/使用したくない場合は、常に完全な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

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

于 2012-08-26T11:54:44.237 に答える
0

URL全体にhtmlspecialcharsを適用するのではなく、データをエンコードするだけの場合は、コンテンツのみにのみ適用することをお勧めします。このようにして、データ内の特別な文字を使用してURLを保存します

于 2012-08-26T11:48:08.573 に答える