如何使用php获取url中的特定文本或数字id

时间:2016-04-27 04:04:25

标签: php

我需要像这样从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 ;

但没有工作

1 个答案:

答案 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。

Demo

说明:

  • .+?匹配非贪婪时尚的任何字符
  • \/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;

Demo

说明:

  • http匹配`http
  • s?可选s
  • :\/\/匹配://
  • [^\/]+一个或多个非/字符
  • \/匹配/
  • \D+一个或多个非数字字符
  • \d+一个或多个数字(因此,第一个数字)
  • \D+一个或多个非数字字符
  • \/匹配/
  • (\d+)匹配并捕获一个或多个数字(第二个数字)
  • .*任何字符
  • $1(在替换中)替换为捕获的组