从字符串中获取部分

时间:2013-02-26 22:04:32

标签: php regex string explode

我正在尝试从网站收集所有CatID ...网址结构是......

  

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

但它什么也没给我......

感谢您的帮助..

7 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分: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;
}

答案 3 :(得分:1)

代码:

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

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

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

演示:

答案 4 :(得分:1)

尝试...

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

如果字符串中 1 =

,这将有效

答案 5 :(得分:1)

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

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

,ID将在$res[1]

答案 6 :(得分:1)

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

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

echo preg_filter('/[^0-9]/','',$st);