0

我有以下(不同)结构的链接:

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

category- 和 productname 的长度不同,但 id (abc12345) 总是位于最后一个“/”之后,大约 6-8 个字符长。

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

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

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

4

3 回答 3

4

我会去:

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

这样,您就不会遇到锚点 (#content) 或查询参数 (?id=123) 的问题

于 2013-03-15T15:33:22.037 回答
1

在以下条件下:

  • 产品 (abc12345) 始终位于 URL 的末尾
  • 没有查询字符串/参数

试试下面的正则表达式:

preg_match('/\/([\w]+)\/?$/', $val, $arr);
$product = $arr[1];
于 2013-03-15T15:32:45.143 回答
1

我会使用preg_match

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

你也可以使用简单的东西strrpossubstr

$result = substr($val, strrpos($val, '/') + 1);
于 2013-03-15T15:35:16.573 回答