PHP 字符串正在将空格更改为 + 符号.需要解码以保留空格

PHP string is changing spaces to + symbols. Need to decode to keep spaces

本文关键字:空格 符号 解码 保留 字符串 PHP      更新时间:2023-09-26

我有以下代码放置会话代码"3888",以便当用户在没有会话代码的情况下将他们重定向到URL。如果他们的 URL 中包含代码,页面将继续加载。

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

所以现在var

var region= getURLParameter('region');

打印为南非+非洲,而不是南非。

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

这是PHP代码:

 <?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();
?>

我已经有这个作为javascript代码:

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

这似乎不能解决它...我可以在PHP代码的某个地方使用urldecode()吗?没有PHP代码,我所有的变量都被完美地理解了。

你可以

使用 JS 的 replace() 函数:

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

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

我找到了一个解决方案:

$self = str_replace("+", ", $self);