我正在尝试从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=['"](.*)?['"]|'>)