-3

可能重复:
如何使用 PHP 解析和处理 HTML?

我试图弄清楚如何通过正则表达式获取 -tagg 中的单词/单词。我的内容是这样的:

<li id="menu-item-90" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-90"><a href="http://example.com/">Start</a></li>
<li id="menu-item-484" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-484"><a href="http://example.com/test/">Test</a></li>
<li id="menu-item-375" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-375"><a href="http://example.com/test2/">test number two</a></li>
<li id="menu-item-171" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-171"><a href="http://example.com/test3/">Test 3</a></li>

所以上面的代码我只想从中得到以下内容:

  • 开始
  • 测试
  • 测试二
  • 测试 3

如何使用 preg_split 和格式化链接上的正则表达式来实现这一点?我尝试了以下方法,但我的正则表达式技能不是第一。只输出一个空数组。

$tag = 'a';
$topMenuValues = preg_split('{<'.$tag.'[^>]*>(.*?)</'.$tag.'>}', $topMenuValues);
4

1 回答 1

-1

您正在拆分整个<a..>...</a>标签,这意味着它与整个标签匹配。问题在于(.*?)中间,您应该将它们与您的分隔符正则表达式匹配。试试吧

'{(<'.$tag.'[^>]*>)|(</'.$tag.'>)}'

话虽如此,这仅适用于上述 html 的特定实例。你真的应该使用 html 解析器

用于 PHP 的强大且成熟的 HTML 解析器

于 2012-07-24T13:15:40.980 回答