如何通过正则表达式收集HTML链接内的文本?

时间:2019-03-18 17:54:22

标签: php html regex parsing dom

我有一个带有链接的字符串(如HTML中无序列表(a中的<li>元素)。如何使用正确的正则表达式进行解析?

我需要获取此值的数组:

[
    "Керамическая плитка", 
    "Напольные покрытия"
]

基本HTML(示例):

<li><a href="/plitka/">Керамическая плитка</a></li> 
<li><a href="/napolnye-pokrytiya/">Напольные покрытия</a></li> 
<li><a href="/oboi/">Обои</a></li> 
<li><a href="/mebel-dlia-vannoi/">Мебель для ванной</a></li> 
<li><a href="/santehnika/">Сантехника</a></li>

非常感谢。非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

解析器是您应该使用的工具,而不是正则表达式。像这样:

<?php
$links = '<li><a href="/plitka/">Керамическая плитка</a></li> 
<li><a href="/napolnye-pokrytiya/">Напольные покрытия</a></li> 
<li><a href="/oboi/">Обои</a></li> 
<li><a href="/mebel-dlia-vannoi/">Мебель для ванной</a></li> 
<li><a href="/santehnika/">Сантехника</a></li>';
$dom = new domdocument();
$dom->loadhtml('<?xml encoding="utf-8" ?>' . $links);
$links = $dom->getelementsbytagname('a');
foreach($links as $link) {
    echo $link->nodeValue . PHP_EOL;
}

可以检索a的节点值。如果路径更具体,请使用xpath

https://3v4l.org/b1lKZ