1

おそらく(うまくいけば)非常に簡単に解決できる問題がありますが、行き詰まっています。

urlencode (または rawurlencode) 関数を使用すると、送信しているスクリプトが見つかりません。

したがって、これはうまく機能します:

$data["text"] .= "<a href='index.php?load=results&reg=".$row["region"]."'>".$row["region"]."</a><br/>";

そして、正しいページに移動します:

index.php?load=結果®=CRO

しかし、私が仕事をしている人は、「&」記号を(R)登録記号に置き換えており、ページが見つからない. 残念ながら、このオフィスの他のコンピュータでこれを再現することはできません

したがって、コードを変更して読み取ると

$data["text"] .= "<a href='".urlencode("index.php?load=results&reg=".$row["region"])."'>".$row["region"]."</a><br/>";

このページに誘導しようとする

index.php%3Fload%3Dresults%26reg%3DCRO

しかし、次のページが見つからないというエラーが表示されます。

要求された URL index.php?load=results®=CRO がこのサーバーで見つかりませんでした。

要求された URL が問題を解決する URL とまったく同じであるため、これは本当に奇妙です。ある段階でurldecode(またはrawurldecode)を実行する必要があることは理解していますが、ロードするスクリプトさえ見つからない場合は、とにかくその機能を実行できません...

編集: 詳細 - TextWranger を使用して Mac でコーディングしています。このファイルは、Unix (LF) の行末で utf8 を使用してエンコードされています。ローカルサーバーはMAMPを使用しており、ライブサーバーはWindowsベースのマシンですが、ここで始めたばかりなので、役立つ構成設定がわかりません. 出力 HTML は UTF-8 でエンコードされます。

4

3 に答える 3

2

使用方法は次のとおりです。

$data["text"] .= "<a href='index.php?load=results&reg=".urlencode($row["region"])."'>".$row["region"]."</a><br/>";

あなたがしているのは、クエリ全体ではなく、パラメーターの値を urlencoding することです。

だから基本的に:

$data = "index.php?key=".urlencode("hello world value");
// will result in:
"index.php?key=hello%20world%20value"
于 2012-12-11T01:01:59.203 に答える
1

HTML 4.01 仕様によると:

URI には非 ASCII 値は含まれませんが ([URI]、セクション 2.1 を参照)、作成者は URI を期待する属性値でそれらを指定することがあります (つまり、DTD で %URI で定義されます)。たとえば、次の href 値は不正です。

したがって、基本的に、URI で非 ASCII 文字を使用するべきではありません。異なるユーザー エージェントは異なる方法で処理するためです。

たとえば、ユーザー エージェントは、ドキュメントの文字セット エンコーディングを使用することを決定したり、html エンティティ エンコーディングを想定したりする場合があります。これはおそらく、ユーザーが経験したと述べたものです。したがって、最善の方法は、URL の URI 部分全体を urlencoding してhref、タグの属性に常に ASCII 文字を指定することです。a

この URL をその場で組み立てている場合、毎回、すべての試練を処理するのに役立つ PHP の関数の 1 つがhttp_build_queryです。これは、クエリ文字列をまとめて適切に URL エンコードします。

$row["region"] = "CRO";
$query = array(
                  "load" => "results",
                  "reg"  => $row["region"],
              );
$query = http_build_query($query);

echo $URL = "index.php?" . $query; // index.php?load=results&reg=CRO

今、あなたは使用することができます

echo "<a href=\"$URL\">{$row['region']}</a>";

そして、あなたは得る...

<a href="index.php?load=results&reg=CRO">CRO</a>
于 2012-12-11T01:59:00.930 に答える
0

疑問符は区切り文字として使用され、クエリ文字列の一部ではありません。

文字「?」をエンコードすることはできません キャラクター "?" クエリ文字列の一部ではありません。

もちろん、クエリ文字列の任意の部分を自由にエンコードできます

試す:

<?php
echo "<a href='get.php?".urlencode("load=results&reg=".urlencode($row["region"])."'>".$row["region"]."</a><br/>";
var_dump($_GET);
?>
于 2012-12-11T01:23:46.523 に答える