PHP从文本中提取相对链接


PHP Extract Relative Links from Text

我正在尝试从html页面中提取所有链接,包括相对链接。我正在使用regex来获取所有url——这很容易——但我也想找到相对链接。所以我想能够找到:

    <a href="http://www.google.com">Some Link</a>

我也想找到

    <a href="somepage.php">Some Other Link</a>

我需要用尽可能少的内存尽快完成这项工作,所以我尽量避免使用DOM之类的东西。有人有什么想法吗?

只是尝试这样的东西。够了吗?

$a = '<a href="http://www.google.com">Some Link</a>';
$p = '/href='"(?<href>.*?)'">(?<content>.*?)</';
preg_match_all($p, $a, $m);
var_dump($m);

$b = '<a href="somepage.php">Some Other Link</a>';
preg_match_all($p, $b, $m2);
var_dump($m2);

如果你不需要参考<href>来访问像$m['href']这样的数据,你可以起飞,这样模式就会变成

$p = '/href='"(.*?)'">(.*?)</';

怎么样

'<a.*?(?:href=['"](.*)?['"]|'>)