我需要像这样从url获取id 示例
http://www.myweb.com/data/11111111111/show/2222222222?auth=c414-4a9a-a0ed-c5034dfdb379
如何获取2222222222
输出
2222222222
使用preg替换我尝试
$file = $a->url;
$file = preg_replace("/\".*\\\\(.*?)?");
echo $file ;
但没有工作
答案 0 :(得分:1)
如果您知道该号码将在/show/
之后,您可以使用此正则表达式:
.+?\/show\/(\d+).*
如下:
$file = $a->url;
$file = preg_replace("/.+?\\/show\\/(\\d+).*/", "$1", $file);
echo $file;
请注意正则表达式开头和结尾的/
。那些被称为分隔符,你需要它们。另请注意,您必须通过键入\
来转义\\
个字符。而preg_replace()
takes a minimum of 3 parameters,而不是1。
说明:
.+?
匹配非贪婪时尚的任何字符\/show\/
匹配/show/
(\d+)
匹配任何捕获一个或多个数字.*
任何字符$1
(在替换中)替换为捕获的组如果您不能依赖/show/
并且只想出现第二个号码,请将正则表达式更改为:
https?:\/\/[^\/]+\/\D+\d+\D+\/(\d+).*
所以你的代码变成了:
$file = $a->url;
$file = preg_replace("/https?:\\/\\/[^\\/]+\\/\\D+\\d+\\D+\\/(\\d+).*/", "$1", $file);
echo $file;
说明:
http
匹配`http s?
可选s
:\/\/
匹配://
[^\/]+
一个或多个非/
字符\/
匹配/
\D+
一个或多个非数字字符\d+
一个或多个数字(因此,第一个数字)\D+
一个或多个非数字字符\/
匹配/
(\d+)
匹配并捕获一个或多个数字(第二个数字).*
任何字符$1
(在替换中)替换为捕获的组