2014-11-01 56 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