在 PHP 中避免相等和符号转换
Avoiding equal and ampersand conversion in PHP
我有一个包含一些特殊字符的 php 变量,在 Codeigniter 3 控制器中:
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);
但它不起作用。
如何保留原始字符?
请使用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");
你的问题不是那么容易重现。以下 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 控制器的一部分这一事实引起的吗?我对 codeigniter 一无所知,但我可以想象在那里进行了进一步的处理。
我有一个包含一些特殊字符的 php 变量,在 Codeigniter 3 控制器中:
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);
但它不起作用。
如何保留原始字符?
请使用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");
你的问题不是那么容易重现。以下 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 控制器的一部分这一事实引起的吗?我对 codeigniter 一无所知,但我可以想象在那里进行了进一步的处理。