使用pre_mattch_all提取SEO URL


Extract SEO urls using pre_mattch_all

我有一些页面,其中包含指向其他页面的链接。我将如何提取所有以特定名称开头的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。