我在 Codeigniter 3控制器中有一个包含一些特殊字符的php变量:
page_url = 'search=' . $expression . '&page';
在模板中,我使用以下变量:
<a href="<?php echo $page_url; ?>"></a>
在浏览器中,我以这种形式看到上面提到的字符:
posts/search?search%3Dharum%26page=2
=
变成%3D
,“&”变成%26
。
我尝试了page_url = urldecode($page_url);
,但没有用。
如何保留原始字符?
答案 0 :(得分:0)
请使用utf8解码,然后重试
echo utf8_decode(urldecode("search%3Dharum%26page=2"));
尝试使用此解码功能。
function decode($url)
{
$special = array(
'%21' => '!', '\\' => '%5C', // so on you need to define.
);
foreach($special as $key => $value)
{
$result = str_replace($key, $value, $url);
}
return $result;
}
echo decode("search=%21");
答案 1 :(得分:0)
您的问题不是那么容易重现。以下rextester演示基本上以您的代码以您请求的形式生成文本:http://rextester.com/YTY13099
<?php
$page=2;
$expression='harum';
$page_url = 'posts/search?search=' . $expression . '&page=' . $page;
?>
<a href="<?php echo $page_url; ?>"></a>
导致
<a href="posts/search?search=harum&page=2">Link</a>
问题可能是由于脚本是代码点火器控制器的一部分引起的吗?我对Codeigniter一无所知,但我可以想象在那里会进行进一步处理。