【问题标题】:php getting part of a URL into a stringphp 将 URL 的一部分转换为字符串
【发布时间】:2009-11-19 09:45:58
【问题描述】:

这个问题更像是一个“什么是最好/最简单的方法”-type-of-question。我想只从字符串中获取用户 ID,例如

<a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a>

我想解析字符串并只获取其中的"123456" 部分。

我想我可以爆炸字符串,但我会得到id=123456&amp;blahblahblah,我想我必须以某种方式动态地从末尾删除垃圾。我认为这可能与正则表达式是可能的,但我对 PHP 相当陌生,所以正则表达式比我高一点。

【问题讨论】:

    标签: php html regex url


    【解决方案1】:

    parse_str() 函数在这里会有所帮助

    $str = "profile.php?rdc332738&amp;id=123456&amp;refid=22";
    parse_str($str);
    echo $id; //123456
    echo $refid; //22
    

    【讨论】:

    • 好像parse_str() 不能处理&amp;amp; 的(正确)表单,但只能理解单个&amp;,所以这段代码不起作用。
    • 另外,如果字符串包含 only 查询字符串,它只会起作用,如果包含 profile.php? 它会混淆并丢失第一个参数。
    【解决方案2】:

    只需从id=&amp;" 抓取任意字符(后者说明id 放在查询字符串最后的情况)

    $str = 'a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a>';
    
    preg_match('/id=([^&"]+)/', $str, $match);
    $id = $match[1];
    

    【讨论】:

      【解决方案3】:

      正则表达式:

      .*id[=]([0-9]*).*$
      

      【讨论】:

        【解决方案4】:

        如果你爆炸字符串:

        $string="<a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a>"
        $string_components=explode('&amp;','$string');
        

        用户 id 部分 (id=123456) 将是:

        $user_id_part=$string_components[1];
        

        然后你可以做一个字符串替换:

        $user_id=str_replace('id=','$user_id_part');
        

        你有用户ID

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-29
          • 1970-01-01
          • 1970-01-01
          • 2013-08-29
          • 2012-10-22
          相关资源
          最近更新 更多