PHP从文本中提取相对链接

时间:2013-11-20 19:51:26

标签: php regex dom

我正在尝试从包含相对链接的html页面中提取所有链接。我正在使用正则表达式获取所有网址 - 这很容易 - 但我也希望找到相关链接。所以我希望能够找到:

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

我也希望能够找到

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

我需要尽可能快地使用尽可能少的内存,所以我试图避免使用DOM等东西。有人有什么想法吗?

2 个答案:

答案 0 :(得分:2)

尝试这样的事情。可以吗?

$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=\"(.*?)\">(.*?)</';

答案 1 :(得分:0)

怎么样

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