【发布时间】:2015-11-09 21:46:37
【问题描述】:
我正在使用此代码删除锚标记,并使用表达式仅获取内部文本
<ul class="alpha">
<li><h3><a href="http://www.overstock.com/Electronics/Computers-Tablets/473/dept.html?TID=TN:ELEC:Comp">Computers & Tablets</a></h3></li>
<li><a href="http://www.overstock.com/Electronics/2-in-1s/28195/subcat.html?TID=TN:ELEC:2in1">2-in-1s</a></li>
<li><a href="http://www.overstock.com/Electronics/Laptops/133/subcat.html?TID=TN:ELEC:Lap">Laptops</a></li>
</ul>
表达式为:
echo preg_replace('#<a.*?>([^>]*)</a>#i', '$1', $str);
输出是:
Computers & Tablets
2-in-1s
Laptops
我们可以使用正则表达式以数组形式获取锚标记内的内部文本吗?请分享您的想法。
【问题讨论】:
-
那是 PHP 吗?您可以使用
DOMDocument轻松做到这一点。 -
而不是
preg_replace使用preg_match_all -
作为一般规则:使用 DOM 解析,而不是正则表达式来解析 HTML。
-
不要使用正则表达式来处理 HTML。请参考this 问题,了解如何通过 DOM 操作来完成。
标签: javascript php jquery html regex