我想这是一个很小的问题,但我不得不问这里,因为我在我的项目中做得不够。当我将字符串传递给另一个控制器中的函数时,它会将空格更改为%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
答案 0 :(得分:11)
试试这个:
public function add_user($message)
{
echo urldecode($message);
}
您可以在此处详细了解urldecode:http://php.net/manual/en/function.urldecode.php
答案 1 :(得分:2)
试试这个:
echo urldecode($message);
因为您将邮件作为URL的一部分传递(重定向执行新的http请求),所以它会自动进行URL编码。您只需在服务器收到它后对其进行解码即可。
答案 2 :(得分:0)
保存到数据库时使用:
htmlentities($variable)
输出使用时:
echo html_entity_decode($variable, ENT_COMPAT, 'UTF-8');