我把头发拉过这一头。我想获得< a>中的所有内容标签,我的html结构看起来像:
<ul>
<li><a href="#">One</a></li>
<li><a href="#">Two</a></li>
<li><a href="#">Three</a></li>
</ul>
我的正则表达式:
/<a ?.*>(.*?)<\/a>/
当cms没有输出带有换行符的&lt; li&gt;时出现问题:
<ul>
<li><a href="#">One</a></li><li><a href="#">Two</a></li>
<li><a href="#">Three</a></li>
</ul>
这是匹配数组的一些示例输出:
Array
(
[0] => Array
(
[0] => <a href="/schools/early-years-groups" class="active">Early Years Groups</a></li><li class="leaf first menu-mlid-20328 order_early_years_stuff"><a href="#" title="Order Schools Stuff">Order Early Years Stuff</a>
[1] => <a href="/schools/early-years-groups/fundraise" title="Fundraise">Fundraise</a>
[2] => <a href="/schools/early-years-groups/ey-showcase" title="Early Years Showcase">Early Years Showcase</a>
[3] => <a href="/schools/how-to-pay-your-money-in" title="">How To Pay Your Money In</a>
[4] => <a href="/schools/early-years-groups/learning-activities" title="Learning Activities">Learning Activities</a>
)
[1] => Array
(
[0] => Order Early Years Stuff
[1] => Fundraise
[2] => Early Years Showcase
[3] => How To Pay Your Money In
[4] => Learning Activities
)
)
非常感谢任何帮助,这让我疯了!
答案 0 :(得分:2)
你不应该使用正则表达式解析HTML ...你会发现很多例子在这里解释原因。
也许像PHP Simple DOM Parser这样的东西可以帮到你。
答案 1 :(得分:2)
答案 2 :(得分:1)
你的正则表达式在开头标签上过于“贪婪”。这样的事情会更好:
<a\s?[^>]*>([^<]*)</a>
它匹配锚点,带有可选空格,后跟任何内容但关闭&gt;标签,所以当它击中&gt;时它肯定会停止。同样的技巧适用于锚点的内容,寻找任何东西但是&lt;结束锚标记。