2012-12-02 126 views
0

我有一個文本「a href」和「[link]」鏈接。我想使preg_split這段文字,並有數組,其中的[I]我能找到的鏈接PHP - 正則表達式來拆分URL

例子:

My text <a href="www.example.com">text</a> this continues [link=http://www.second.com]link[/link] 

=> 

[0] My text 
[1] <a href="www.example.com">text</a> 
[2] this continues 
[3] [link=http://www.second.com]link[/link] 

我應該怎樣寫我的正則表達式?

+0

不要PA用正則表達式rse HTML。使用[PHP附帶的DOM模塊](http://php.net/manual/en/book.dom.php)。正則表達式並不總是使用的工具,即使問題涉及到文本。 –

回答

1

(.+)(\<a.+\/a>)(.+)(\[link.+\/link])

產生

Match groups: 
1. My text 
2. <a href="www.example.com">text</a> 
3. this continues 
4. [link=http://www.second.com]link[/link] 

http://rubular.com/r/8PEUbDX9zr

0

像這樣的事情我猜。如果一切都在同一行..

/\<a\.*[link=(.*)\].*$/i 
0
<?php 
$text = 'My text <a href="www.example.com">text</a> this continues [link=http://www.second.com]link[/link]'; 


preg_match_all('/(?:href="|link=)(.*?)(?:"|\])/is', $text, $links); 
// $links[1] = array('link', 'link', 'link'...) 
$links = $links[1]; // $links = array('link'...) 
?> 

應該工作:)

+0

它只返回[0] => www.example.com –

+0

如果我直接複製我的示例並運行它並var_dump $鏈接我得到 [0] =>「www.example.com」 [1] =>「http://www.second.com」 確定您正在使用preg_match_all? – Jesperhag

+0

奇怪..如果我複製並粘貼你的例子,我只得到我發佈的內容...甚至你的輸出與我所需要的不同 –