2014-11-06 60 views
0

我有包含指向其他页面的链接的页面。我将如何提取所有与特定名称使用pre_mattch_all提取SEO网址

开始喜欢我的页面标签

<a href="shows/film/lop-film/">Some Text</a> 
<a href="movie/current/lop-film/">Some Text</a> 
<a href="rot.company.com/sow/test/page/asd.mov"></a> 


$search = '/<a\s+(?:[^"\'>]+|"[^"]*"|\'[^\']*\')*href=("[^"]+"|\'[^\']+\'|[^<>\s]+)/i' 
preg_match_all($search, $Content, $matches); 
foreach ($matches[1] as $value) { 
    print_r('Links :'.$value); 
} 

它提取而是返回链接到外部网站不受欢迎的URL和电子邮件

http://www.amazon.co.uk/ 
mailto:[email protected] 

我主要是想在href过滤以show |开头的匹配电影| domain.name

回答

1

你的正则表达式模式更改为

$search = '/<a\s+(?:[^"\'>]+|"[^"]*"|\'[^\']*\')*href=("(show|movie|domain\.name)[^"]+"|\'(show|movie|domain\.name)[^\']+\'|(show|movie|domain\.name)[^<>\s]+)/i'; 

复制的(show|movie|domain\.name)相貌丑陋,但因为你必须处理单或双引号href属性我没有找到一个更好的办法。一般都不"'应该是一个URL的一部分,但谁知道..

但工作在HTML Dom通常更好地使用PHP DOMDocument而不是正则表达式。

+0

感谢您的回答。有用。 – 2014-11-06 09:53:40