我正在使用正则表达式从网站中提取数据,但现在我发现了一个问题。
这是我要解析的原始 HTML 的一部分。我想提取“descuentos-”之后的文本和“<a href>”之后的城市。
<div id="cities2_2">
<a href = "http://website.com/descuentos-espana/">Badajoz</a>
<a href = "http://website.com/descuentos-espana/">Badalona</a>
<a href = "http://website.com/descuentos-barcelona/">Barcelona</a>
<a href = "http://website.com/descuentos-bilbao/">Bilbao</a>
<a href = "http://website.com/descuentos-espana/">Burgos</a>
</div>
</div>
<div class="capa_cities" onmouseover="act_formato(3, 2);"
onmouseout="desact_formato(3, 2);">
<h2 id="title_city3_2">C</h2>
<div id="cities3_2">
<a href = "http://website.com/descuentos-espana/">Cáceres</a>
<a href = "http://website.com/descuentos-cadiz/">Cádiz</a>
<a href = "http://website.com/descuentos-espana/">Cartagena</a>
<a href = "http://website.com/descuentos-espana/">Castellón</a>
<a href = "http://website.com/descuentos-espana/">Ceuta</a>
<a href = "http://website.com/descuentos-espana/">Ciudad Real</a>
<a href = "http://website.com/descuentos-cordoba/">Córdoba</a>
<a href = "http://website.com/descuentos-espana/">Cuenca</a>
我可以寻找 <a href = " http://website.com/descuentos- (.*)">,但还有其他与网站中的模式相匹配的。所以我现在有这个模式:
#<div id="cities[0-9]+_2">(<a href = "http://website.com/descuentos-(.*?)/">(.*?)</a>)*#
我想让它递归。我的意思是:对于找到的每个“<a href =” http://website.com/descuentos- (.* )/">(.*)</a>",搜索里面的两个小图案。
有没有办法在正则表达式中实现这一点,或者我必须通过 preg_match_all 重新处理它?