Php 正则表达式:在换行之前匹配行上的所有html标记

Php 正则表达式:在换行之前匹配行上的所有html标记,php,html,regex,Php,Html,Regex,我在为这件事发愁。我想把所有的内容都放进去 还有我的正则表达式: /<a ?.*>(.*?)<\/a>/ / 这是匹配数组的一些示例输出: Array ( [0] => Array ( [0] => <a href="/schools/early-years-groups" class="active">Early Years Groups</a></li>&l

我在为这件事发愁。我想把所有的内容都放进去
  • 还有我的正则表达式:

    /<a ?.*>(.*?)<\/a>/
    
    /
  • 这是匹配数组的一些示例输出:

    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]=>阵列
    (
    [0]=>
  • [1] => [2] => [3] => [4] => ) [1] =>阵列 ( [0]=>订购早年产品 [1] =>筹款 [2] =>早年展示 [3] =>如何用现金付款 [4] =>学习活动 ) )

  • 非常感谢你的帮助,这让我快发疯了

    您不应该使用正则表达式来解析HTML。。。你会在这里找到很多例子来解释原因


    也许类似的东西可以帮你解决这个问题。

    问题是,当你在搜索
    时使用贪婪搜索,而它应该是懒惰的。下面是一个例子:

    <a .*?>(.*?)<\/a>
         ^
    

    您的正则表达式在开始标记上太“贪婪”。这样的方法应该更有效:

    <a\s?[^>]*>([^<]*)</a>
    

    ]*>([^的标记,所以当它点击该>,它肯定会停止。同样的技巧也适用于锚的内容,除了结束锚标记的<之外,寻找任何东西。

    啊,永无止境的…你需要使用正则表达式来完成这项任务吗?PHP有一些HTML解析器可供使用,它们更适合于此。@KerrekSB可能重复谢谢你!我是一个完全的regex noob,这可以工作,但是选择整个元素而不是内容,或者像上面那样选择多维的元素和内容-有什么想法吗?但是在正确的轨道上谢谢:)
    <a .*?>(.*?)<\/a>
         ^
    
    <a\s?[^>]*>([^<]*)</a>