避免PHP中的等号和&转换

时间:2018-09-25 05:53:24

标签: php special-characters codeigniter-3

我在 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);,但没有用。

如何保留原始字符?

2 个答案:

答案 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一无所知,但我可以想象在那里会进行进一步处理。