【问题标题】:Getting a part from a string从字符串中获取一部分
【发布时间】:2013-02-26 22:04:32
【问题描述】:

我正在尝试从一个站点收集所有 CatID...URL 结构是...

http://www.abc.com/family/index.jsp?categoryId=12436777

我对它感兴趣 categoryId 在这种情况下是 12436777

我的问题是

哪个最好,Regex 还是字符串爆炸??

如果是正则表达式,请帮帮我,我很不擅长它..

另外,我必须考虑像这样的网址

http://www.abc.com/product/index.jsp?productId=12282785

我试过了

$array = explode("http://www.abc.com/family/index.jsp?categoryId=", $loc); 

foreach ($array as $part) {
        $zee[] = $part[1];
}

但它什么也没给我..

感谢您的帮助..

【问题讨论】:

  • explode 的第一个参数是分隔项。如果您想使用它,请执行$res=explode("=", $loc),id 将在$res[1]

标签: php regex string explode


【解决方案1】:

您可以使用parse_url 可靠地为您提供查询字符串:

$parts = parse_url('http://www.abc.com/family/index.jsp?categoryId=12436777');

然后parse_str 解析出变量:

parse_str($parts['query'], $result);
echo $result['categoryId']; // outputs 12436777

【讨论】:

    【解决方案2】:

    您可以使用以下正则表达式:

    http://.+?Id=(\d+)
    

    第一组将包含您要查找的 ID。

    【讨论】:

      【解决方案3】:

      怎么样:

      $url_parts = parse_url('http://www.abc.com/family/index.jsp?categoryId=12436777');
      
      if (isset($url_parts['query'])) {
        $query_parts = explode('&', $url_parts['query']); 
      
        $keys = array(); 
        foreach ($query_parts as $part) { 
            $item = explode('=', $part); 
            $keys[$item[0]] = $item[1]; 
        } 
      
        $category_id = isset($keys['categoryId']) ? $keys['categoryId'] : 0;
      }
      

      【讨论】:

        【解决方案4】:

        试试……

          list(,$id) = explode('=','http://www.abc.com/product/index.jsp?productId=12282785');
        

        如果字符串中有 1 =,这将起作用

        【讨论】:

          【解决方案5】:

          explode 的第一个参数是分隔项。如果您想使用它,请尝试以下方式:

          $loc = "http://www.abc.com/family/index.jsp?categoryId=12436777";
          $res=explode("=", $loc);
          

          id 将在$res[1]

          【讨论】:

            【解决方案6】:

            代码:

            $url = "http://www.abc.com/family/index.jsp?categoryId=12436777";
            
            $parts = Explode('=', $url);
            
            $id = $parts[count($parts) - 1];
            

            演示:

            【讨论】:

            • 对于 $parts 的结尾部分,只需使用 end() 函数
            • 谢谢指教,下次我会用它^^。
            【解决方案7】:

            如果你确定 what , 是唯一的数字,就这样做

            $st = "http://www.abc.com/family/index.jsp?categoryId=12436777";
            
            echo preg_filter('/[^0-9]/','',$st);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2017-06-19
              • 2012-07-23
              • 2023-03-16
              • 1970-01-01
              • 2016-06-13
              相关资源
              最近更新 更多