2016-04-27 46 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很高興幫助! –

相關問題