获取此字符串的最后一个数字

时间:2012-08-20 19:46:32

标签: php regex

首先让我说我不太了解Reg-Ex所以我希望有人可以帮助我。

我有一个字符串,如“/ 1/3”或“/ 1/34/2/6”,我试图在最终/之后得到最后一个数字

一位朋友给我发了这个公式,但它给我的全部是最后一个/

preg_replace('~^/([0-9]+)(/.*)?$~', '$1', $cat['path']);

$ cat [path]是我得到的字符串。我应该如何更改它以给出最终数字而不是斜杠/

4 个答案:

答案 0 :(得分:4)

我会在不使用正则表达式的情况下解决这个问题。

$parts = explode('/', $input);
$latest_one = array_pop($parts);

答案 1 :(得分:3)

你想:

#/(\d+)$#

其中#是分隔符。这意味着,

/      a slash,
\d+    a sequence of one or more digits,
$      then the end.

括号表示您希望捕获序列。

PHP代码将是:

$string = "1/12/26";

if (preg_match('#/(\d+)$#', $string, $results))
{
    $number = $results[1]; // [0] holds the whole string
    print "The last number is $number.";
}

答案 2 :(得分:3)

$cat['path']是文件系统还是网址路径? PHP已经具备处理这些功能的功能。

$cat['path'] = '/1/34/2/6';
var_dump(
    basename($cat['path']),
    pathinfo($cat['path'], PATHINFO_BASENAME)
);

有用的信息

答案 3 :(得分:-1)

preg_match('{/(\d)[^\d]*$}', $string, $matches);
$matches[0]; // this should be your number
  • {}是分隔符 - 通常的分隔符是//@@但是在您方便的时候选择允许你尽可能少地逃避字符的分隔符;
  • /匹配一个斜杠 - 如果我们使用/分隔符,我们需要用反斜杠来逃避此斜杠;
  • \d匹配一个数字 - \ d *将匹配任意数字的数字,包括无数字,\ d +将匹配任意数量的数字,但至少有一位数字;
  • [^\d]*匹配任何非数字的内容;如果你确定字符串结尾之前的最后一个字符绝不是除数字之外的任何其他字符,那么这可以是可选的;
  • $匹配字符串的结尾 - 这可以确保我们正在查看字符串的结尾;

使用/分隔符的等效示例:

preg_match('/\/(\d)[^\d]*$/', $string, $matches);