用php / preg_split分割链接

时间:2013-03-15 15:28:15

标签: php string

我有以下(变化)结构的链接:

http://website.com/category/product/abc12345

类别 - 和产品名称的长度有所不同,但id(abc12345)始终位于最后一个“/”之后,大约为6-8个字符。

我尝试使用以下代码提取链接:

preg_split('/[/]/', $val, $arr);
$narr[] = end($arr);

val是链接而arr是数组,应该粘贴结果。 narr是我想稍后保存到文件的数组,所以这里并不重要。不幸的是,当我以这种方式尝试时,我的结果总是空的。

3 个答案:

答案 0 :(得分:4)

我会选择:

$urlParts = parse_url($myUrl);
$parts = explode('/', $urlParts['path']);
$productId = array_pop($parts);

这样,你对锚点(#content)或查询参数(?id = 123)没有问题

答案 1 :(得分:1)

在以下条件下:

  • 产品(abc12345)始终位于网址的末尾
  • 没有querystrings / params

尝试以下正则表达式:

preg_match('/\/([\w]+)\/?$/', $val, $arr);
$product = $arr[1];

答案 2 :(得分:1)

我会使用preg_match

if (preg_match('#.*/(.*)#', $val, $match)) {
    $result = $match[1];
}

您还可以使用像strrpossubstr这样简单的内容:

$result = substr($val, strrpos($val, '/') + 1);