【问题标题】:Get URL Variable From Array从数组中获取 URL 变量
【发布时间】:2016-07-29 20:53:27
【问题描述】:

我正在尝试从数组中的对象列表中获取 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 )

我希望在 <div> 元素内的数组中显示每个 URL 变量 ID

<div>435</div>
<div>53</div>
<div>5</div>
<div>25</div>

我尝试使用以下代码执行此操作,但没有成功:

foreach($display as $display2) {
   echo '<div>'.$_GET['ID'].'</div>';
}

【问题讨论】:

  • 这将涉及到正则表达式(正则表达式)。 $_GET 变量从当前页面的请求中提取,不是从字符串中剥离查询数据的函数。

标签: php html arrays variables


【解决方案1】:

$_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>';
}

【讨论】:

    【解决方案2】:

    假设 $array 包含所有 URL,如您的示例所示:

    foreach($array as $v){
        $str = explode('=', $v);
        echo '<div>'.$str[1].'</div>';
    }
    

    【讨论】:

      【解决方案3】:

      您正在寻找的可能是这样的。您需要遍历数组中的每个 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>';
      }
      

      【讨论】:

        【解决方案4】:

        $_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 以验证它是否按预期工作。

        编辑:

        在 echo 周围添加了 if 块,以过滤掉可能没有 ID 值的 url。

        【讨论】:

        • 我注意到您的代码中有+ 4。这是数组中有多少个对象?我刚刚发布了一个例子;我无法预见会有多少物体(它会有所不同)
        • 不,substr() 操作应该从查询字符串的问号? 之后的字符数开始。即计算?substr()函数应该在开始substr()操作之前移动4个字符?=ID。这是一个偏移量,因为您知道查询字符串参数的名称。但是,如果发布的内容是示例,则此方法行不通。如果 url 总是有一个名为 ID 的参数,这是一种粗略但有效的方式来做你想做的事。诚然,如果网址只是示例,其他答案可能更适合。
        猜你喜欢
        • 1970-01-01
        • 2011-09-28
        • 1970-01-01
        • 2020-10-22
        • 1970-01-01
        • 2014-02-02
        • 2015-01-18
        • 1970-01-01
        相关资源
        最近更新 更多