首页 > 解决方案 > 如何通过正则表达式收集 HTML 链接中的文本?

问题描述

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

我需要得到这个值的数组:

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

基本 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>

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

标签: phphtmlregexparsingdom

解决方案


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

<?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


推荐阅读