我正在运行一个客户端的网站,当一个get字符串传递给它时被访问,我刚收到他们的新链接,我需要从链接中提取5件事。其中一个项目是ID,因此get字符串通常如下所示:
www.website.com/index.php?id=1232352346
以前是如何发送的,但是这个最新的设置如下:
www.website.com/index.php?id=2345134&123461
我想知道的是,如果我像这样拉
$id=htmlspecialchars($_GET["id"], ENT_QUOTES);
它只有第二个和之前的数字吗? (例如:2345134)或者它会有整件事(例如:2345134& 123461)?
答案 0 :(得分:2)
如果您希望它们分开,您可以尝试这种快速解决方法
array_walk($_GET, function(&$i,$k){empty($i) AND $i=$k;});
var_dump($_GET);
输出
array
'id' => string '2345134' (length=7)
123461 => int 123461
如果您想要整个字符串并且id
是网址中唯一的密钥,您可以尝试
list($key, $value) = explode("=", $_SERVER['QUERY_STRING']);
var_dump($key,$value);
输出
string 'id' (length=2)
string '2345134&123461' (length=14)
答案 1 :(得分:2)
如果它们不是&
的URL编码,那么ID的后半部分将被视为另一个参数 - 无论您如何处理$_GET
有几种方法可以尝试解析它 - 一种简单的方法是检查空参数并假设是另一半的id。您还可以忽略查询字符串的解析方式,并自行解析(可能忽略在两位数内找到的任何&
)。
但实际上,最好的办法是确保网址编码正确 - 然后一切都会按预期工作。
以下是您提供的网址的解析方式(使用parse_str()
,该网址应与$_GET
的填充方式相符):
array(2) { ["id"]=> string(7) "2345134" [123461]=> string(0) "" }
以下是如何解析格式正确的URL:
/index.php?id=1234%265678
array(1) { ["id"]=> string(9) "1234&5678" }
如果客户端使用PHP生成URL,则可以使用http_build_query()
并自动处理所有编码。
答案 2 :(得分:1)
$url = "www.website.com/index.php?id=2345134&123461";
$parsed = parse_url($url);
parse_str($parsed["query"], $query);
var_dump($query);
请注意,parse_url
无法使用无效网址。
这应该有效:
$id = $_GET["id"];
unset($_GET["id");
$keys = array_keys($_GET);
unset($keys);
$other = $_GET[$keys[0]];
var_dump($id, $other);
答案 3 :(得分:1)
试
$url = "2345134&123461";
$pieces = explode("&", $url);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
var_dump($pieces );
答案 4 :(得分:0)
怎么样.. www.website.com/index.php?id=2345134&123461
//explode it
$string=$_GET['id'];
list($first,$second)=explode('&',$string);
//$first = 2345134
//$second = 123461
神圣的bejesus答案很快......