删除锚标记并使用正则表达式以数组形式获取内部文本

时间:2015-08-17 09:46:26

标签: javascript php jquery html regex

我使用此代码删除锚标记,并使用表达式

仅获取内部文本
    <ul class="alpha">
                <li><h3><a href="http://www.overstock.com/Electronics/Computers-Tablets/473/dept.html?TID=TN:ELEC:Comp">Computers &amp; 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

我们可以使用正则表达式以数组形式获取锚标记内的内部文本吗?请分享您的想法。

2 个答案:

答案 0 :(得分:2)

我不喜欢你和HTML一起使用HTML而不是使用DomDocument但是好像你想使用正则表达式而不是使用preg_match_all作为

preg_match_all('/(?:(<a.*?>))(.*?)(?=<\/a>)/', '<ul class="alpha">
                <li><h3><a href="http://www.overstock.com/Electronics/Computers-Tablets/473/dept.html?TID=TN:ELEC:Comp">Computers &amp; 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>',$res);
print_r($res[0]);

输出

Array
(
    [0] => Computers & Tablets
    [1] => 2-in-1s
    [2] => Laptops
)

答案 1 :(得分:0)

由于您使用了jQuery标记,我更喜欢在jQuery中执行此操作:

var values = [];
$('.alpha').find('a').each(function(index){
    values.push($(this).text());
});

此代码获取.alpha类中的所有链接,并将它们推送到values数组中。 values的输出是:

0: "Computers & Tablets"
1: "2-in-1s"
2: "Laptops"