我正在尝试提取用户名:
preg_match_all("/\<a href\=\"/Users\/(\D+)\/\"\>(.*)\<\/a\>", $file_content, $matches);
来自以下
<a href="/Users/stackoverflow">stackoverflow</a>
但它没有显示任何内容:(
你能告诉我那里有什么问题吗?
答案 0 :(得分:0)
您的正则表达式中包含不必要的\/
,并且您不需要逃避<
或>
或=
。所以改变你的正则表达式如下,
<a href=\"/Users\/(\D+?)\">(.*)<\/a>
"/\<a href\=\"/Users\/(\D+)\/\"\>(.*)\<\/a\>"
^
|
将(\D+)
转为非捕获组将留下一个组。
<a href=\"/Users\/(?:\D+?)\">(.*)<\/a>
答案 1 :(得分:0)
非常感谢您的帮助和有用的链接:)
这是我的最终代码:
$matches = array();
preg_match_all("<a href=\"/Users\/(\D+?)\">", $file_content, $matches);
foreach($matches[1] as $child) {
echo $child . "\n";
}
答案 2 :(得分:0)
您的匹配字符串中有正斜杠,而您在尝试匹配的数据中没有正斜杠:
preg_match_all("/\<a href\=\"/Users\/(\D+)\/\"\>(.*)\<\/a\>", $file_content, $matches);
^
期待:
<a href="/Users/stackoverflow/">stackoverflow</a>
即在href属性的结束引号之前的另一个斜杠,如stackoverflow /&#34;&gt;
所以它永远不会匹配。