2012-12-02 95 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

奇怪..如果我复制并粘贴你的例子,我只得到我发布的内容...甚至你的输出与我所需要的不同 –