1
我有一個名爲$content
的變量,它包含一個DokuWiki Markdown文件的內容。PHP preg_match_all()匹配太多
我想匹配所有在樣式的鏈接:[[http://url.com/|title]]
這裏是可變我想對陣的一部分:
[[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2FgettingStarted%2Fqs-37-3c.htm|Eclipse]], [[https://msdn.microsoft.com/en-us/library/xc3ed5eh%28v=vs.90%29.aspx|Visual Studio]] and [[https://www.jetbrains.com/idea/help/managing-bookmarks.html|IntelliJ Idea]]
我現在的正則表達式是:/\[\[(.*)\|([\w\s]+?)\]\](?=\,|\s)/
,但它匹配我上面列出的整個部分,包括,
和and
。
每個分離出來的鏈接,我要的是,所以我從preg_match_all('/regular_expression/', $content, $links);
尋找的結果是:
$links[0][0] = [[http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2FgettingStarted%2Fqs-37-3c.htm|Eclipse]]
$links[0][1] = [[https://msdn.microsoft.com/en-us/library/xc3ed5eh%28v=vs.90%29.aspx|Visual Studio]]
$links[0][2] = [[https://www.jetbrains.com/idea/help/managing-bookmarks.html|IntelliJ Idea]]
$links[1][0] = http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2FgettingStarted%2Fqs-37-3c.htm
$links[1][1] = https://msdn.microsoft.com/en-us/library/xc3ed5eh%28v=vs.90%29.aspx
$links[1][2] = https://www.jetbrains.com/idea/help/managing-bookmarks.html
$links[2][0] = Eclipse
$links[2][1] = Visual Studio
$links[2][2] = IntelliJ Idea
改變:'(。*)'(這太貪心和不精確)爲:'([^ | \ [ \]] *)'。 – ridgerunner
問題或答案? – chris85
不,我明白你改變了什麼,我實現了它,它運作良好。非常感謝你! – slichlyter12