2016-04-27 44 views
1

我需要从以下网址获得ID这样 例如如何获得特定文字或数字ID的URL与PHP

http://www.myweb.com/data/11111111111/show/2222222222?auth=c414-4a9a-a0ed-c5034dfdb379 

如何获得2222222222

输出

2222222222 

与预浸取代我试试

$file = $a->url; 
$file = preg_replace("/\".*\\\\(.*?)?"); 
echo $file ; 

但不起作用

+1

id是否总是在'/ show /'后面搜索字符串,然后取值直到达到问号。 –

回答

1

如果你知道电话号码将是/show/后,您可以使用此正则表达式:在开始和结束

$file = $a->url; 
$file = preg_replace("/.+?\\/show\\/(\\d+).*/", "$1", $file); 
echo $file; 

注意/

.+?\/show\/(\d+).* 

在本的正则表达式。这些被称为分隔符,你需要它们。还请注意,您必须通过输入\\来逃避\字符。而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(在替换中)替换为捕获的组
+0

工作非常感谢。 – vallez

+0

@vallez很高兴帮助! –

相关问题