2017-08-11 56 views
0

如何從下面的字符串正則表達式在PHP中捕捉到的字符串

<tr><td>4 <td><b><a href="number.php?v=41a&k=53&t=102">3</a></b> 

v = 41 
k = 45 
t = 102 

我只想要這個我試過的每個段(VKT)的數量

獲得正則表達式以下值和只拿到一次一個

v=\d+ 
+0

你想單獨或分別提取這些值(3個regexs) ? – gribvirus74

+0

如果可能,在一個正則表達式中,我想提取三個 –

+1

1)使用DOMDocument/DOMXPath提取href值。 2)使用'parse_url'來提取url的查詢部分。 3)使用'parse_str'獲取不同的值。 –

回答

1

如果你輸入的字符串是真的像你說的那麼簡單,你可以preg_match_all使用:

$str = '<tr><td>4 <td><b><a href="number.php?v=41a&k=53&t=102">3</a></b>'; 
preg_match_all('/(?<=[vkt]=)\d+/', $str, $m); 
print_r($m[0]); 

輸出:

Array 
(
    [0] => 41 
    [1] => 53 
    [2] => 102 
) 
+0

比我想像的更好 –

+0

在PHP中完美工作。爲什麼不regex101工作? –

+0

@André:因爲它是preg_match_all的一個特性,它不僅是一個正則表達式。 – Toto

0

使用的每個字母的正回顧後:

(?<=v=)\d+ 
(?<=k=)\d+ 
(?<=t=)\d+ 
+0

不工作http://regexr.com/3ghq7 –

+0

因爲每個正則表達式都有不同的值,所以當它們連接時,它們將毫無用處。 – gribvirus74

+0

我一次試過一次,出錯 –