我有以下代码放置会话代码"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);