• Sayısını saymak
  • 2 Cevap php

    Bir var < bazı ul> < li> (ler). Ben s. Ve bu sayı belirli bir koşul nitelendirir eğer ben biraz daha eklemek istiyorum < Bu li> elemanlar < ul>. Birisi bana bu konuda yardım edebilir misiniz?

    2 Cevap

    Kullanım PHP'nin DOM library, ya da bakmak Simple DOM Parser. Her ikisi de size soru ölçüde HTML manipüle ve arama için gereken her şeyi var

    php's DOM module ve XPath kullanarak ilk basit bir örnek

    $s = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html><head><title>...</title></head><body>
      <ul>
        <li>1</li><li>2</li>
      </ul>
      <ul>
        <li>1</li><li>2</li><li>3</li>
      </ul>
      <ul>
        <li>x</li><li>y</li>
      </ul>
    </body></html>';
    
    $doc = new DOMDocument;
    $doc->loadhtml($s);
    $xpath = new DOMXPath($doc);
    
    foreach( $xpath->query('//ul[ count(li)<3 ]') as $ul ) {
      $li = $doc->createElement('li', 'abc...xyz');
      $ul->appendChild($li);
    }
    
    echo $doc->savehtml();
    

    ve sonra ben ne demek istediğini bir basitleştirilmiş bir örneği "Ve bu işlevi yanı sıra ekstra verileri dahil değil mi?"

    echo firstFunction(array('a'), 'secondFunction');
    
    function firstFunction($arrData, $fnFill=null) {
      $rv = '';
      $counter = 0;
      foreach($arrData as $e) {
        $counter += 1;
        $rv .= '<li>'.htmlspecialchars($e).'</li>';
      }
    
      if ( 4 > $counter && !is_null($fnFill)) {
        // oh no. Not enough elements. Let's call $fnFill(), it provides some filler material
        $rv .= $fnFill();
      }
      return $rv;
    }
    
    // providing extra li elements
    function secondFunction() {
      return '<li>x</li><li>y</li><li>z</li>';
    }