Viennamade: Suchmuster gierig trotz U

Hallo!

Mit diesem Suchmuster geht es mir darum, alle td-Elemente zu erwischen die colspan oder rowspan-Attribute haben:

preg_match_all('/<td.(.*)((colspan|rowspan)="\d")(.*)>(.*)</td>/sU',$inhalt,$elemente,PREG_SET_ORDER);

Kontrolliere ich jetzt $elemente[xyz,0], also jene Zellen welche die gesamte Übereinstimmung enthalten sollten, so ist dieser Zellinhalt in allen (hunderten) Fällen wie gewünscht, nur in einem nicht. Da ist die Übereinstimmung (unterhalb dem Gruß habe ich sie reinkopiert) viel zu lang :-)

Bitte um Hilfe,
Viennamade

[0]=>
  array(6) {
    [0]=>
    string(2405) "<td id="tddsrahmen">
    <div id="dsrahmen">
    <!-- VerweislisteAnfang-->
    <ul>
    <li><a href="led/accessories.php">Zubehör</a></li><li><a href="led/configurator.php">Konfigurator</a></li><li><a href="faq.php">Wissenswertes</a></li><li><a href="downloads.php">PDF downloaden</a></li>    </ul>

<!-- VerweislisteEnde-->
    </div>
</td>
<td class="pic"><img id="x13jpg" src="graphics/x13.jpg" title="LED-Ringlicht
mit 40 LED's
ø 66 mm" alt="LED-Ringlicht
mit 40 LED's
ø 66 mm" /></td><td class="pic"><img id="x12jpg" src="graphics/x12.jpg" title="LED-Ringlicht
mit LED's
ø 36 mm" alt="LED-Ringlicht
mit LED's
ø 36 mm" /></td><td class="pic"><img id="x15jpg" src="graphics/x15.jpg" title="LED-Spot
mit 19 LED's
ø 34 mm" alt="LED-Spot
mit 19 LED's
ø 34 mm" /></td><td class="pic"><div class="bild"><p>Bild</p><p>Titel: LED-Durchlicht<br />Alt: LED-Durchlicht</p></div></td></tr>
<tr><td class="artikelbez">&nbsp;</td><td class="artikelbez borderright">LED-Ringlicht 40</td><td class="artikelbez borderright">LED-Ringlicht 36</td><td class="artikelbez borderright">LED-Spot</td><td class="artikelbez borderright">Universaldurchlicht</td></tr>
<tr onmouseover="fndslehi(this)" onmouseout="fndslelo(this)"><td>LED's</td><td>40</td><td>20</td><td>19</td><td class="borderright">20</td></tr>

<tr onmouseover="fndslehi(this)" onmouseout="fndslelo(this)"><td>Farbtemperatur</td><td>5.000 K</td><td>5.000 K</td><td>5.000 K</td><td class="borderright">5.000 K</td></tr>
<tr onmouseover="fndslehi(this)" onmouseout="fndslelo(this)"><td>Material</td><td>Aluminium<br />anti-static</td><td>Aluminium anti-static</td><td>Aluminium,<br />anti-static</td><td class="borderright">PVC schwarz,<br />Verbundglas</td></tr>
<tr onmouseover="fndslehi(this)" onmouseout="fndslelo(this)"><td>Dimensionen</td><td>Objektiv Ø 66 mm<br />

Außen    Ø 94 mm<br />
Höhe 25 mm</td><td>Objektiv Ø 64 mm,<br />
Außen    Ø  mm<br/ >
Höhe 25 mm</td><td>Ø 34 mm<br />Höhe 24.5 mm</td><td class="borderright">Objektiv Ø 95 mm<br />Außen Ø 120 mm<br />Höhe 24.5 mm</td></tr>
<tr onmouseover="fndslehi(this)" onmouseout="fndslelo(this)"><td class="borderbottom">Kabellänge</td><td>1.000 mm</td><td>1.000 mm</td><td>1.000 mm</td><td class="borderright">1.000 mm</td></tr>

<tr>
<td class="pic" rowspan="5"><div class="bild"><p>Bild</p><p>Titel: LED-Steuereinheit<br />Alt: LED-Steuereinheit</p></div></td>"

  1. Hi,

    Mit diesem Suchmuster geht es mir darum, alle td-Elemente zu erwischen die colspan oder rowspan-Attribute haben:
    preg_match_all('/<td.(.*)((colspan|rowspan)="\d")(.*)>(.*)</td>/sU',$inhalt,$elemente,PREG_SET_ORDER);

    ^^^^
    an dieser Stelle suchst Du doch alles Mögliche, auch Zeilenumbrüche. In Deinem Ergebnis kommt erst am Schluß einmal rowspan vor dem abschließenden </td> vor. Ungreede beurteilt meines Wissen von vorn her. Es trifft also das nächste Mal nach irgendwelchen anderen Treffern auf <td> und dann auf den ganzen Schrott und erst sehr spät auf "rospan" und ein nachfolgendes </td>. Das scheint mir richtig.

    Ich schlage am Anfang des Suchmusters dies vor:

    '/<td [^>]*((colspan|rowspan...

    Gruß, Andreas

    --
    http://forum.andreas-lindig.de <img src="http://forum.andreas-lindig.de/bilder/logo.png" border="0" alt="">
    einfach mal testen und Meinung hinterlassen
    1. Hallo Andreas!

      Mit diesem Suchmuster geht es mir darum, alle td-Elemente zu erwischen die colspan oder rowspan-Attribute haben:
      preg_match_all('/<td.(.*)((colspan|rowspan)="\d")(.*)>(.*)</td>/sU',$inhalt,$elemente,PREG_SET_ORDER);
                          ^^^^
      an dieser Stelle suchst Du doch alles Mögliche, auch Zeilenumbrüche. In Deinem Ergebnis kommt erst am Schluß einmal rowspan vor dem abschließenden </td> vor. Ungreede beurteilt meines Wissen von vorn her. Es trifft also das nächste Mal nach irgendwelchen anderen Treffern auf <td> und dann auf den ganzen Schrott und erst sehr spät auf "rospan" und ein nachfolgendes </td>. Das scheint mir richtig.

      Ich schlage am Anfang des Suchmusters dies vor:
      '/<td [^>]*((colspan|rowspan...

      1. Vorschlag angenommen, es funktioniert.
      2. Blamiere Dich täglich, vor knapp 2 Wochen habe ich hier noch gefragt was » =<body[^>]*>= « bedeutet ... http://forum.de.selfhtml.org/archiv/2004/8/87419/#m519603 ... aber jetzt habe ich es wirklich - g.

      Danke (ich wäre selber nicht draufgekommen)!
      Viennamade

        1. Vorschlag angenommen, es funktioniert.

        fein.

        1. Blamiere Dich täglich, vor knapp 2 Wochen habe ich hier noch gefragt was » =<body[^>]*>= « bedeutet ... http://forum.de.selfhtml.org/archiv/2004/8/87419/#m519603 ... aber jetzt habe ich es wirklich - g.

        Danke (ich wäre selber nicht draufgekommen)!

        kommt vor. So wie ich kürzlich nicht darauf gekommen bin, daß man sich eine Query auch bookmarken kann, um sie nicht immer wieder tippen zu müssen ;-)

        Gruß, Andreas

        --
        http://forum.andreas-lindig.de <img src="http://forum.andreas-lindig.de/bilder/logo.png" border="0" alt="">
        einfach mal testen und Meinung hinterlassen
        1. Hallo wiederum :-)

          Und bin schon wieder am verzweifeln ....

          Versuche jetzt das Ganze - in abgespeckter Form - negativ ... nämlich alle td-Anfangtags zu erwischen die das colspan-Attribut _nicht_ enthalten ...

          preg_match_all('/<td [^>]*(?!colspan)(.*)>/sU',$inhalt,$elemente,PREG_SET_ORDER);

          ... aber »?!« bringts nicht.

          Beste Grüße
          Viennamade

          1. Versuche jetzt das Ganze - in abgespeckter Form - negativ ... nämlich alle td-Anfangtags zu erwischen die das colspan-Attribut _nicht_ enthalten ...

            :-)) man kann nicht etwas nicht suchen. Ich verweise immer wieder gern auf eine sehr schöne Antwort, die ich zu dem gleichen Thema mal von Sven Rautenberg bekommen habe. Man sollte sie mal zu einem Feature-Artikel ausbauen ;-)

            http://forum.de.selfhtml.org/archiv/2002/7/17788/#m99975

            Gruß, Andreas

            --
            http://forum.andreas-lindig.de <img src="http://forum.andreas-lindig.de/bilder/logo.png" border="0" alt="">
            einfach mal testen und Meinung hinterlassen
            1. Hallo Andreas!

              Versuche jetzt das Ganze - in abgespeckter Form - negativ ... nämlich alle td-Anfangtags zu erwischen die das colspan-Attribut _nicht_ enthalten ...

              :-)) man kann nicht etwas nicht suchen. Ich verweise immer wieder gern auf eine sehr schöne Antwort, die ich zu dem gleichen Thema mal von Sven Rautenberg bekommen habe.

              http://forum.de.selfhtml.org/archiv/2002/7/17788/#m99975

              Alles - und noch vieles mehr - gelesen ... wozu so ein Forumsausfall doch gut ist ;-)

              Man sollte sie mal zu einem Feature-Artikel ausbauen ;-)

              Paßt auch vielleicht dazu: Man kann nicht an Nichts denken. Wenn A zu B sagt: "Denken Sie jetzt keinesfalls an einen rosaroten Elefanten" .... dann Schwupp-di-Wupp: B hat den rosaroten Elefanten schon im Kopf.

              Herzlich Dank,
              Viennamade