André Laugks: Regulärer Ausdruck: Mehrzeiliger String

Hallo!

Ich habe einen mehrzeiligen String, bei dem ich den Steinname und Farbnamen holen möchte. Im Quelltext steht der String aber über mehrere Zeilen. Bei den Zeilenanfängen- und enden befinden sich nicht nur Leerzeichen sondern auch Tabulatoren.

Gibt es eine Möglichkeit die zu erfassen? Mit \m bekomme ich es nicht hin. Ich könnte nach jedem Tag ein [\s\t] setzen oder mit suchen&ersetzen entfernen, was auch funktioniert nur eben unbefriedigend.

<?PHP

function print_var($var)
 {
  echo "<pre>";
  echo var_dump($var);
  echo "</pre>";
 }

$string = '  <div class="divStein">
    <div class="divBild"><img src="../../../p30_Produkte/341_bordsteine_leisten/h8.jpg" width="110" height="110"></div>
    <div class="divBeschreibung"><span class="textTitel">Steinname
      </span><br>
      <span class="textFarbe">Farbe</span></div>
    <div class="divPreislsite"><img src="../../../p_Allgemein/pfeil_css.gif" width="4" height="7" alt="&gt;" border="0" class="imgPfeil"><a href="341_p_bor_lei.htm#h7" target="_self" class="linkpreisliste">Preisliste</a></div>
  </div>';
$regExp = '<div class="divBeschreibung"><span class="textTitel">(.*)</span><br><span class="textFarbe">(.*)</span></div>';

preg_match('/' . preg_quote($regExp, "/") . '/im', $string, $output);

print_var($output);

?>

MfG, André Laugks

--
L-Andre @ gmx.de
  1. Huhu André

    Im Quelltext steht der String aber über mehrere Zeilen.

    Dann hilft Dir wahrscheinlich der Modifer s weiter.
    Der Punkt "matched" dann auch auf "newlines".

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Hallo!

      Dann hilft Dir wahrscheinlich der Modifer s weiter.
      Der Punkt "matched" dann auch auf "newlines".

      \s bringt auch nichts. ich denke der hängt sich an den Tabs auf.

      MfG, André Laugks

      --
      L-Andre @ gmx.de
      1. Huhu André

        \s bringt auch nichts. ich denke der hängt sich an den Tabs auf.

        Nö, eigentlich nicht.

        Hier mal zwei "RegExpse" die so ungefähr das tun "wo ich denke dass Du das willst".

        Kannst ja mal schauen ob Dir das weiterhilft.

        <?PHP

        function print_var($var)
         {
          echo "<pre>";
          echo var_dump($var);
          echo "</pre>";
         }

        $string = '  <div class="divStein">
            <div class="divBild"><img src="../../../p30_Produkte/341_bordsteine_leisten/h8.jpg" width="110" height="110"></div>
            <div class="divBeschreibung"><span class="textTitel">Steinname
              </span><br>
              <span class="textFarbe">Farbe</span></div>
            <div class="divPreislsite"><img src="../../../p_Allgemein/pfeil_css.gif" width="4" height="7" alt="&gt;" border="0" class="imgPfeil"><a href="341_p_bor_lei.htm#h7" target="_self" class="linkpreisliste">Preisliste</a></div>
          </div>

        <div class="divStein">
            <div class="divBild"><img src="../../../p30_Produkte/341_bordsteine_leisten/h8.jpg" width="110" height="110"></div>
            <div class="divBeschreibung"><span class="textTitel">Tiername wie war der noch gleich

        Fiffi oder Waldi ?
              </span><br>
              <span class="textFarbe">FellFarbe</span></div>
            <div class="divPreislsite"><img src="../../../p_Allgemein/pfeil_css.gif" width="4" height="7" alt="&gt;" border="0" class="imgPfeil"><a href="341_p_bor_lei.htm#h7" target="_self" class="linkpreisliste">Preisliste</a></div>
          </div>

        ';

        $regExp = '#<span class="textTitel">(.*)</span>(?:.*)<span class="textFarbe">(.*)</span>#Uis';

        $regExp = '#<span class="(.*)">(.*)</span>#Uis';

        preg_match_all($regExp, $string, $output);

        print_var($output);

        ?>

        Viele Grüße

        lulu

        --
        bythewaythewebsuxgoofflineandenjoytheday