Quick Regex php - 从字符串中获取ID

时间:2011-03-21 14:16:23

标签: php regex

任何看过我帖子的人都会知道,我是一个正则表达式。任何人都可以告诉我如何从这个文件名中获取ID,会非常感激吗?

/data/64786/sasf.zip

我需要此行的 64786 位,始终遵循 / data / - 任何能够快速帮助的人?

4 个答案:

答案 0 :(得分:2)

~/data/(\d+)/~

这将匹配紧跟字符串/data/之后的小数组(0-9)。匹配位于组1

如果字符串看起来也像/data/64786(即数字后面没有任何内容),请改用~/data/(\d+)~。实际上,您可以使用这种方式,因为\d+默认情况下会贪婪,因此匹配尽可能多的小数。 (Tested at Rubular。)

答案 1 :(得分:1)

这是一个数字。使用\d+占位符 d ecimals:

preg_match("#(\d+)#", $str, $matches);
$id = $matches[1];

如果id始终出现在同一个地方,那么您可以添加斜杠#/(\d+)/#以确保可靠性。大多数文本字符串可以在正则表达式中用作锚点。

[参考,工具] https://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world

答案 2 :(得分:1)

您可以使用以下代码获取ID:

$filename = '/data/64786/sasf.zip';
$prefix = '/data/';
$prefix_pos = strpos($filename, $prefix);

if($prefix_pos !== false)
{
    $prefix_pos_end = $prefix_pos + strlen($prefix);
    $slash_pos   = strpos($filename, '/', $prefix_pos_end);
    $id          = substr($filename, $prefix_pos_end, $slash_pos - $prefix_pos_end);
}
else    $id         = false;

答案 3 :(得分:0)

你为什么不试试:basenamedirname(“/ data / 64786 / sasf.zip”))