【问题标题】:How to grab a numeric id in URI?如何在 URI 中获取数字 id?
【发布时间】:2018-10-18 12:33:43
【问题描述】:

我需要获取#/ 之后的第一个数字 ID。 例如,我只想在这些 URI 中抓取 68 和 112:

//www.domain.tld/category/14-457-myproduct.html#/68-attribute-fm_300_224_39_b

//www.domain.tld/category/36-578-myproduct.html#/112-attribute-fm_489_471_51_w

我什至尝试在几个步骤中拆分 URI,但它在我的网站上一次不起作用(Smarty 模板)。

【问题讨论】:

  • 尝试使用捕获组#/(\d+)demo或匹配正斜杠和数字之间的任何非数字,然后使用捕获组尝试#/\D*(\d+)
  • 谢谢,但这两个正则表达式不起作用。
  • 你能展示你试过的代码吗?或者这怎么行不通?尝试转义正斜杠#\/(\d+),或者如果适用,使用不同的分隔符~#/(\d+)~
  • 你可以在下面看到......相同的条件(当然是开始和结束斜线)
  • 要匹配他们都使用preg_match_all 例如3v4l.org/jcHvf

标签: regex url uri numeric


【解决方案1】:

你有没有尝试过这样的事情:

<?php

$pattern = "/#\/([0-9])*-/";
$url1  = "//www.domain.tld/category/14-457-myproduct.html#/68-attribute-fm_300_224_39_b";
$url2 = "//www.domain.tld/category/36-578-myproduct.html#/112-attribute-fm_489_471_51_w";

echo getNumber($url1, $pattern);
echo "\n";
echo getNumber($url2, $pattern);

function getNumber($url, $pattern){
    preg_match($pattern,  $url, $matches);

    return substr($matches[0], 2, -1);
}

【讨论】:

  • 谢谢!这适用于 Smarty :) 首先:{$temp = preg_match('/#\/([0-9])*-/', $product.url, $match)} 然后:{$match[0]|substr:2:-1}。为什么$temp 分配?因为我没有找到其他不显示操作结果的方法,仅此而已。
  • 对不起,我不知道 Smarty,我无法告诉你为什么需要分配 $temp...
猜你喜欢
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 2019-11-27
  • 2010-11-15
相关资源
最近更新 更多