preg_match_all Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • preg_match_all Problem

    Hallo!

    Habe folgende Tabelle wobei ich den Inhalt des <tr>Inhalt</tr> auslesen möchte:

    <tr class="d" ttd="15"> ...Inhalt... </tr>
    <tr class="e" tti="17"> ...Inhalt... </tr>
    <tr tti="17"> ...Inhalt... </tr>
    ........

    Was muss ich schreiben damit er nach allen <tr ... ttd= oder tti=> (.*?) </tr> sucht? Teilweise ist eine class vorhanden teilweise nicht. Deswegen möchte ich es unabhängig von der class und nur abhängig von tti oder ttd haben.

    preg_match_all(' Was kommt hier her? ', $data, $matches);

    Ciao

  • #2
    Willkommen im Forum.

    Zum Beispiel:

    PHP-Code:
    <?php

    $input 
    = <<<EOT
    <tr class="d" ttd="15"> ...Inhalt... 
    mehrzeilig</tr>
    <tr class="e" tti="17"> ...Inhalt... </tr>
    <tr tti="17"> ...Inhalt... </tr>
    EOT;

    $pattern '/<tr[^>]*>(.*?)<\/tr>/s';

    $matches = array();

    preg_match_all($pattern$input$matches);

    var_dump($matches[1]);
    Oder gleich per DOMDocument.

    - PHP: DOMDocument - Manual

    Kommentar


    • #3
      Danke für die rasche Antwort!

      Und wenn es so aussieht:

      [COLOR=#000000][COLOR=#0000CC]<tr class="d" ttd="15"> ...Inhalt... </tr>
      <tr class="e" tti="17"> ...Inhalt... </tr>
      <tr tti="17"> ...Inhalt... </tr>[/COLOR][/COLOR]
      [COLOR=#000000][COLOR=#0000CC]<tr class="e"> ...Inhalt... </tr> => DIESE NICHT
      <tr> ...Inhalt... </tr>[/COLOR][/COLOR] [COLOR=#000000][COLOR=#0000CC]=> DIESE NICHT

      [/COLOR][/COLOR][FONT=monospace]Möchte nur die Inhalte, wo ttd und tti vorkommen. Geht das?

      Ciao
      [/FONT][COLOR=#000000][COLOR=#0000CC][/COLOR][/COLOR]

      Kommentar


      • #4
        Denke in etwa so:

        PHP-Code:
        <?php

        $input 
        '...';

        $doc = new DOMDocument('1.0''UTF-8');
        $doc->loadHTML($input);

        $xpath = new DOMXPath($doc);

        $nodes $xpath->query('//tr[@ttd|@tti]');

        foreach (
        $nodes as $node) {
            
        /* @var $node DOMElement */
            
        var_dump($node->nodeValue);
        }

        Kommentar


        • #5
          [COLOR=#000000][COLOR=#0000CC]Funktioniert das auch irgendwie mit preg_match_all?

          Benötige den Inhalt als html-Code.

          D.h.: [/COLOR][/COLOR][COLOR=#000000][COLOR=#0000CC]<tr class="e" tti="17"> <td class="td_1">10</td><td class="name" colspan="3"><a href="/blablaLink">Name</a></td></tr>[/COLOR][/COLOR]

          Benötige ich => [COLOR=#000000][COLOR=#0000CC]<td class="td_1">10</td><td class="name" colspan="3"><a href="/blablaLink">Name</a></td>

          Ciao
          [/COLOR][/COLOR][COLOR=#000000][COLOR=#0000CC]

          [/COLOR][/COLOR]

          Kommentar


          • #6
            Da gäbe es etwa:

            - PHP: DOMElement - Manual

            Mit einem regulären Ausdruck geht es auch irgendwie, wenn du den Aufbau der Tags hardcodest beziehungsweise hardcoden kannst… Aber das ist einfach nicht der richtige Weg.

            - html - RegEx match open tags except XHTML self-contained tags - Stack Overflow

            Kommentar


            • #7
              Für sowas kann ich auch http://simplehtmldom.sourceforge.net/ empfehlen...

              Kommentar

              Lädt...
              X