5

これは小さな問題だと思いますが、プロジェクトが不足しているので、ここで質問する必要がありました。別のコントローラーの関数に文字列を渡すと、スペースが%20記号に変わります。コントローラは、渡された文字列をurlと見なし、エンコードしていると思います。しかし、それを削除する方法が正確にはわかりません。可能であれば、スペースを%20に変更させないでください。これが私が使用するコードです。

$message="The user name you provided is already in our database";
redirect('admin/add_user/'.$message);

これが、メッセージを受信するコントローラー関数です。

public function add_user($message)
{
  echo $message;
}

私もこれを試しました。

public function add_user()
{
  echo $this->uri->segment(3);
}

しかし、結果は同じです。文字列の出力は次のとおりです。

The%20user%20name%20you%20provided%20is%20already%20in%20our%20database
4

3 に答える 3

13

これを試して:

public function add_user($message)
{
  echo urldecode($message);
}

urldecode の詳細については、http://php.net/manual/en/function.urldecode.php を参照してください

于 2013-03-18T11:26:14.753 に答える
2

これを試して:

echo urldecode($message);

メッセージを URL の一部として渡すため (リダイレクトは新しい http 要求を行います)、自動的に URL エンコードされます。サーバーが受信したら、デコードするだけです。

于 2013-03-18T11:27:02.113 に答える
0

データベースに保存するときは、次を使用します。

htmlentities($variable)

使用を出力するとき:

echo html_entity_decode($variable, ENT_COMPAT, 'UTF-8');
于 2013-03-18T11:34:24.797 に答える