1

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

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

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

我的问题是

哪个最好,正则表达式或字符串爆炸?

如果是正则表达式,请帮助我,我对此很不好..

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

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];
}

但它什么也没给我..

感谢帮助..

4

7 回答 7

6

您可以使用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
于 2013-02-26T22:08:42.383 回答
2

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

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

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

于 2013-02-26T22:06:51.420 回答
2

怎么样:

$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;
}
于 2013-02-26T22:08:43.980 回答
1

代码:

$url = "http://www.abc.com/family/index.jsp?categoryId=12436777";

$parts = Explode('=', $url);

$id = $parts[count($parts) - 1];

示范:

于 2013-02-26T22:06:45.253 回答
1

尝试...

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

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

于 2013-02-26T22:08:20.660 回答
1

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

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

并且 id 将在$res[1]

于 2013-02-26T22:08:45.170 回答
1

如果您确定 what , 是唯一的数字,请执行此操作

$st = "http://www.abc.com/family/index.jsp?categoryId=12436777";

echo preg_filter('/[^0-9]/','',$st);
于 2013-02-26T22:12:32.673 回答