我正在尝试从数组中的对象列表中获取URL变量ID
并显示它们。
当前代码:
$display = print_r($array);
echo $display;
输出:
Array ( [0] => https://example.com?ID=435 [1] => https://example.com?ID=53 [2] => https://example.com?ID=5 [3] => https://example.com?ID=25 )
我希望在ID
元素内的数组中显示每个网址变量<div>
:
<div>435</div>
<div>53</div>
<div>5</div>
<div>25</div>
我尝试使用以下代码执行此操作,但没有运气:
foreach($display as $display2) {
echo '<div>'.$_GET['ID'].'</div>';
}
答案 0 :(得分:2)
$_GET
超级全局用于从当前请求访问查询字符串值,而不是从存储在字符串中的任意URL中读取它们。
但不用担心,PHP的标准库有帮助的功能,即parse_url()和parse_str()
foreach($display as $url) {
$queryString = parse_url($url, PHP_URL_QUERY);
parse_str($queryString, $parameters);
echo '<div>'.$parameters['ID'].'</div>';
}
答案 1 :(得分:1)
你正在寻找的东西可能是这样的。您需要循环遍历数组中的每个URL并从中提取ID。这可以通过在=
分割URL并抓住第二部分来完成。
foreach($display as $display2) {
$stringArray = explode("=", $display2); //Break apart string at "="
$id = $stringArray[1]; //Grab second part of split string (the ID)
echo '<div>'.$id.'</div>';
}
答案 2 :(得分:1)
假设$ array包含所有URL,如示例所示:
foreach($array as $v){
$str = explode('=', $v);
echo '<div>'.$str[1].'</div>';
}
答案 3 :(得分:0)
$_GET
是一个超级全局,包含所请求页面的所有查询参数。它不能在url字符串列表中使用。
相反,您可以使用substr()
和strrpos()
的组合:
$urls = array(
"https://example.com?ID=435",
"https://example.com?ID=53",
"https://example.com?ID=5",
"https://example.com?ID=25",
);
foreach($urls as $url) {
if(strrpos($url, "?") !== FALSE) {
echo "<div>" . substr($url, strrpos($url, "?") + 4) . "<br />";
}
}
您可以将上述示例复制并粘贴到phpfiddle.org中,以验证其是否按预期工作。
修改强>
在回显周围添加了if
块,以过滤掉可能没有ID
值的网址。