我的网页包含指向其他网页的链接。如何提取以特定名称
开头的所有href喜欢我的网页标签
<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);
}
它会提取但返回链接到外部网站和电子邮件的不需要的网址
http://www.amazon.co.uk/
mailto:sp@company.com
我主要想过滤以show |开头的比赛电影| domain.name
答案 0 :(得分:1)
将正则表达式模式更改为
$search = '/<a\s+(?:[^"\'>]+|"[^"]*"|\'[^\']*\')*href=("(show|movie|domain\.name)[^"]+"|\'(show|movie|domain\.name)[^\']+\'|(show|movie|domain\.name)[^<>\s]+)/i';
(show|movie|domain\.name)
的复制看起来很难看,但由于你必须用单引号或双引号来处理href属性,所以我找不到更好的方法。一般来说,"
或'
都不应该是网址的一部分,但谁知道..
但是使用HTML Dom通常更好地使用PHP DOMDocument而不是正则表达式。