php
  • dom
  • 2011-01-31 61 views 1 likes 
    1
    <?php 
    require_once("simple_html_dom.php"); 
    $str = '<div class="content"><span>text1</span><span>text2</span><span>text3</span><span>text4</span><span>text5</span><span>text6</span><span>text7</span><span>text8</span><span>text9</span><span>text10</span><span>text11</span><span>text12</span><span>text13</span><span>text14</span><span>text15</span><span>text16</span></div>'; 
    $dom = html_entity_decode($str); 
    $html = str_get_html($dom); 
    foreach($html->find('span') as $e) 
        echo $e . '<br>'; 
    ?> 
    

    在此代码中,它可以在一行中回显每个跨度。但是,我如何编写它,以便将3个结果合并成一个foreach?如何将3个结果合并为1 foreach(PHP html DOM)

    我需要一个像结果:

    text1 text2 text3 <br /> 
    text4 text5 text6 <br /> 
    text7 text8 text9 <br /> 
    text10 text11 text12 <br /> 
    text13 text14 text15 <br /> 
    text16 
    

    回答

    5

    使用模运算符%在你的foreach循环。

    $counter = 1; 
    foreach ($html->find('span') as $e) { 
        echo $e; 
    
        if (($counter % 3) == 0){ 
         echo '<br />'; 
        } 
        ++$counter; 
    } 
    
    +0

    我身上有一种与这一段代码幻觉记忆的什么,我写了http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html – Trufa 2011-01-31 19:11:57

    0

    一种方法是有一个seperat变量来保持每行的数量。

    然后,该数字达到3时,您可以用
    或者开始一个新的重置变量。

    2

    您可以设置一个整数并使用mod来获得余数。

    $i = 1; 
    foreach($html->find('span') as $e) 
    { 
        echo $e; 
        if (($i % 3) == 0) echo '<br />'; 
        $i++; 
    } 
    
    相关问题