要在 php 中获取 html 代码中的所有链接,你可以使用正则表达式或者使用 dom 解析器。我将为你提供两种方法。
方法一:使用正则表达式
<?php
$html = '<html>
<body>
<a href="https://example.com">link 1</a>
<a href="https://example.com/page2">link 2</a>
<a href="https://example.com/page3">link 3</a>
</body>
</html>';
preg_match_all('/<a\s+[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>/si',$html,$matches);
$links = $matches[2];
print_r($links);
>
这段代码会输出链接的 url,但不会输出链接的文本。
方法二:使用 dom 解析器(php 的内建函数)
<?php
$html = '<html>
<body>
<a href="https://example.com">link 1</a>
<a href="https://example.com/page2">link 2</a>
<a href="https://example.com/page3">link 3</a>
</body>
</html>';
$doc = new domdocument();
$doc->loadhtml($html);
$links = $doc->getelementsbytagname('a');
foreach ($links as $link) {
echo $link->getattribute('href')."\n";
}
>
这段代码会输出链接的 url 和文本。如果你只想获取链接的 url,你可以在循环内部添加一行代码 $link->nodevalue;来获取链接的文本。
- 编程问答
- 答案列表
php 获取html代码中的所有链接[朗读]
加入收藏