2013-02-16 52 views
1

我想匹配一個字符串中的「ID」,由一些數字組成(範圍從1位到9)(該點是它有一個可變長度)。下面的代碼不會反向引用我的ID,我很新的PHP和我試圖谷歌沒有很好的答案。如何反向引用此字符串(php)

<?php 
$to = 'data-hovercard="/ajax/hovercard/user.php?id=100002781344760">Ae fj'; 

preg_match('/user.php?id=[\d]+\\"/', $to, $matches); 

echo $matches[0]; 
?> 

整點是獲得「10000278134476」,在「/ AJAX /名片/user.php?id=100002781344760「>」任何有用的正則表達式

+0

[請不要使用正則表達式來解析HTML](http://stackoverflow.com/a/1732454/247893) – h2ooooooo 2013-02-16 23:57:08

+0

當然不要看起來像HTML給我 – James 2013-02-16 23:59:13

+0

@James它沒有任何意義使用一個字符串中的HTML數據屬性,用於通過AJAX解析某些東西,或者您還沒有將其剝離的地方。當然,我不能確定,我只是想確保OP和其他人知道你不應該。 – h2ooooooo 2013-02-17 00:01:28

回答

0

添加() s到標記組應該工作,或者如果你想讓它更有意義,你可以嘗試命名組與(?<name>):?

preg_match('/user.php?id=([\d]+)\\"/', $to, $matches); 
//      ^ ^
echo $matches[1]; // capture groups indexed from 1, 0 index is for the whole matched string 

有關模式sytnax的更多信息,請參閱docs

+0

它不會爲我工作。 「PHP注意:第7行的test.php中未定義的偏移量:1」 – 2013-02-16 23:58:33

+1

你的模式搞砸了,它應該是'/user.php\?id =(\ d +)/'轉義​​?而且你不需要擔心結束引號,如果你解析的一個url有另一個參數,它可能會搞砸正則表達式。 – James 2013-02-17 00:02:44

+0

謝謝詹姆斯,它工作完美。 – 2013-02-17 00:06:51