2014-11-01 92 views
1

我試圖提取用戶名正則表達式//獲取價值:從<a>鏈接

preg_match_all("/\<a href\=\"/Users\/(\D+)\/\"\>(.*)\<\/a\>", $file_content, $matches); 

從以下

<a href="/Users/stackoverflow">stackoverflow</a> 

但它不顯示任何

你能告訴我:(那裏有什麼不對?

回答

0

你有一個不必要的\/包含在你的正則表達式中,你不需要轉義<>=。因此,改變你的正則表達式如下圖所示,

<a href=\"/Users\/(\D+?)\">(.*)<\/a> 

DEMO

"/\<a href\=\"/Users\/(\D+)\/\"\>(.*)\<\/a\>" 
         ^
          | 

談到(\D+)到非捕獲組將只剩下一個組。

<a href=\"/Users\/(?:\D+?)\">(.*)<\/a> 
+0

謝謝,我現在給它一個 – 2014-11-01 01:06:18

+0

當然,讓我知道它是否有效。 – 2014-11-01 01:06:54

0

非常感謝您的幫助和有用的鏈接:)

這裏是我的最終代碼:

$matches = array(); 

preg_match_all("<a href=\"/Users\/(\D+?)\">", $file_content, $matches); 

foreach($matches[1] as $child) { 
    echo $child . "\n"; 
} 
0

你在你的匹配字符串有一個正斜槓這是不存在在數據你要匹配:

preg_match_all("/\<a href\=\"/Users\/(\D+)\/\"\>(.*)\<\/a\>", $file_content, $matches); 
             ^

這是期待:

<a href="/Users/stackoverflow/">stackoverflow</a> 

即只是href屬性的結束引號之前另一斜線,如計算器/「>

所以它永遠不會匹配。

+0

天哪!我沒看見它!謝謝 :))) – 2014-11-01 01:29:01