2012-01-12 24 views
6

我有以下網址:www.exampe.com/id/1234我想要一個正則表達式來獲取id參數的值,在這個例子中是1234如何使用正則表達式看後面?

我試圖

<?php 
$url = "www.exampe.com/id/1234"; 
preg_match("/\d+(?<=id\/[\d])/",$url,$matches); 
print_r($matches); 
?> 

,得到了Array ([0] => 1)這是隻顯示第一位。

問題是,我如何重寫正則表達式來獲得所有的數字,使用正面看後面?

+3

爲什麼你想看看後面? – 2012-01-12 15:39:04

+0

我試圖解決一個更復雜的問題,並使用這個例子來簡化它。 – 2012-01-12 15:59:20

回答

10

爲什麼不只是preg_match('(id/(\d+))', $url, $matches)沒有任何向後看?結果將在$matches[1]

順便說一句,正確的後視表達將是((?<=id/)\d+),但你真的不應該使用lookbehind,除非你需要它。

另一種替代方法是(id/\K\d+)\K重置匹配開始,通常用作更強大的後視)。

+0

非常感謝。我主要關心的是弄清楚爲什麼背後看不起作用。我不熟悉'\ K',但我會研究它。 – 2012-01-12 15:55:14

+0

+爲'\ K' thx的好主意 – Thielicious 2017-07-27 23:16:36

6

我同意NikiC,你不需要使用lookbehind;但既然你問—你可以寫

<?php 
$url = "www.exampe.com/id/1234"; 
preg_match("/(?<=id\/)\d+/",$url,$matches); 
print_r($matches); 
?> 
+0

它的工作原理。正是我想要的。 – 2012-01-12 15:52:00

相關問題