Codeigniter %添加20而不是空格

Codeigniter %添加20而不是空格,codeigniter,urlencode,urldecode,Codeigniter,Urlencode,Urldecode,我想这是一个小问题,但我不得不在这里问,因为我的项目快用完了。当我将字符串传递给另一个控制器中的函数时,它会将空格更改为%20符号。我猜控制器认为字符串作为url传递并对其进行编码。但我不知道如何删除它,或者如果可能,不要让它将空格更改为%20。这是我使用的代码 $message="The user name you provided is already in our database"; redirect('admin/add_user/'.$message); 这是我接收信息的控制器功能

我想这是一个小问题,但我不得不在这里问,因为我的项目快用完了。当我将字符串传递给另一个控制器中的函数时,它会将空格更改为%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
试试这个:

public function add_user($message)
{
  echo urldecode($message);
}
echo urldecode($message);
您可以在此处阅读有关urldecode的更多信息:

尝试以下方法:

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

因为您将消息作为URL的一部分传递(重定向执行一个新的http请求),所以它会自动进行URL编码。您只需在服务器收到它后对其进行解码。

保存到数据库时使用:

htmlentities($variable)
输出时使用:

echo html_entity_decode($variable, ENT_COMPAT, 'UTF-8');