任何看过我帖子的人都会知道,我是一个正则表达式。任何人都可以告诉我如何从这个文件名中获取ID,会非常感激吗?
/data/64786/sasf.zip
我需要此行的 64786 位,始终遵循 / data / - 任何能够快速帮助的人?
答案 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)