我有一些页面,其中包含指向其他页面的链接。我将如何提取所有以特定名称开头的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);
}
它提取但返回链接到外部网站和电子邮件的不需要的URL
http://www.amazon.co.uk/
mailto:sp@company.com
我主要想过滤以show|movie|domain.name
将正则表达式模式更改为
$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而不是regex。