我将我的页面重定向到另一个页面,当我转到结果时,它没有显示数据。
当我检查我的浏览器时,它会显示这样的变量
itemid=537600240%3fusername%3d&
我需要提取itemid=537600240
,但是当我尝试这样做时,它会上升到
itemid=537600240?fusername
.
我只需要在 ? 或 %3f。需要帮助请
我将我的页面重定向到另一个页面,当我转到结果时,它没有显示数据。
当我检查我的浏览器时,它会显示这样的变量
itemid=537600240%3fusername%3d&
我需要提取itemid=537600240
,但是当我尝试这样做时,它会上升到
itemid=537600240?fusername
.
我只需要在 ? 或 %3f。需要帮助请
获取 itemid=537600240?fusername 的整个值并使用explode函数获取之前的值?符号。
我认为当您在标题链接中连接值时出现问题
它应该是
http:/mypage/index.php?id=$id&name=$name
获取值
$id=$_GET['id'];
$name=$_GET['name'];
您似乎错误地构建了重定向 URL。正确的 URI 和查询字符串格式应该是:
http://domain.com/dir/script.php?var1=foo&var2=bar&var3=baz
where?
仅出现一次以分隔 URI 的路径部分的结尾和查询字符串的开头。&
应该用于分隔各个查询变量。
%3f
是一个 urlencoded?
并且%3d
是一个 urlencoded =
,我假设您的浏览器正在尝试将您损坏的 URL 变成一个健全的 URL。
此外,任何时候您需要包含本身可能包含特殊字符(如?
、&
、=
、#
等)的数据时,您应该首先传递该数据,urlencode()
然后再将其附加到查询字符串,以免遇到意外行为。
无论如何,一旦你解决了这个问题,你应该得到正确的值,$_GET
而不必做任何额外的处理。
您可以使用正则表达式:
<?php
$var = 'itemid=537600240%3fusername%3d& ';
$regex = '/itemid=[0-9]+/';
preg_match ( $regex, $var, $result);
echo $result[0];
?>
在线测试:http: //ideone.com/SMho8e
或者,如果您只想要整数值,请更改正则表达式和结果,如下所示:
<?php
$var = 'itemid=537600240%3fusername%3d& ';
$regex = '/itemid=([0-9]+)/';
preg_match ( $regex, $var, $result);
echo $result[1];
?>
在线测试:http: //ideone.com/AIIna8