我使用此代码删除锚标记,并使用表达式
仅获取内部文本 <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
我们可以使用正则表达式以数组形式获取锚标记内的内部文本吗?请分享您的想法。
答案 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 & 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"