PHP字符串将空格更改为+符号。需要解码才能保留空间

时间:2016-03-17 05:42:55

标签: javascript php redirect urldecode

我有以下代码,用于放置会话代码" 3888"这样当用户在没有会话代码的情况下浏览到URL时,它们就会被重定向。如果他们在URL中有代码,则页面继续加载。

问题是代码在输出javascript变量时将我的URL空间更改为+符号: 例: 这个 http://localhost/testing/testingvar.php?region=South AFrica& brand = samsung& model = S 5 更改为: http://localhost/testing/testingvar.php?region=South%20AFrica&brand=samsung&model=S%205&mine=3888

所以现在var

 <?php 

session_start();

$self = "{$_SERVER['PHP_SELF']}?{$_SERVER['QUERY_STRING']}";

if(!empty($_GET['mine']) &&  $_GET['mine'] == "3888" )  {
    unset($_GET['mine']);
    $qs = http_build_query($_GET);
    $self = "{$_SERVER['PHP_SELF']}?{$qs}";
    $_SESSION['mine'] = 1;
   header("Location: $self");
    exit;
} elseif (!isset($_SESSION['mine'])) {
    header('Location: http://redirectedpage.com');
    exit;
}

session_unset();
    session_destroy();
    session_write_close();
?>

打印为South + Africa,而不是南非。

无论如何解码URL以保留空格?

这是PHP代码:

<script>
    function getURLParameter(name){return decodeURI( (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1] || '' );}</script>

我已将此作为javascript代码:

{{1}}

这似乎无法修复它...我可以在PHP代码中使用urldecode()吗?如果没有PHP代码,我的所有变量都会被完美地解释。

2 个答案:

答案 0 :(得分:0)

您可以使用JS的replace()函数:

var region = region.replace("+", "%20");

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace的更多信息。

答案 1 :(得分:0)

我找到了解决方案:

$ self = str_replace(&#34; +&#34;,&#34;&#34;,$ self);