2014-11-06 81 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