mir: preg_match

moin

ich check einfach nicht die doku dazu :-(

deshalb frag ich nach dem einfach beispiel, wie man rausfinden kann, was ~ ist, wenn * beliebige platzhalter sind:

irgendwas*vor dem platz_halter~und_nach dem platzhalter*

wie kann ich nun herausfinden, was anstelle von ~ steht unter berücksichtigung, dass eine solche konstruktion öfter im text vorkommt?

danke

  1. Hä??

    Schreib mal nen Beispiel Code!!

    1. <a href="irgendein_link.html"><img src="testbild.jpg"></a>
      <a href="noch_ein_link.html"><img src="testbild2.jpg"></a>
      <a href="letzter_link.html"><img src="testbild3.jpg"></a>

      hierbei sollten diese werte ausgelesen werden:
      testbild.jpg
      testbild2.jpg
      testbild2.jpg

      wie geht denn sowas?

      1. Hi,

        preg_match("#<a href="[^"]*"><img src="([^"]*)"></a>#",$text,$match);

        dannach stehen dann in $match die Bildadressen drin.

        " ist ein 'escaped' ", sonst kriegt man kein " in einen mit " begrenzten String.

        [^"] ist eine Zeichenklasse, die aus allen Zeichen ausser " besteht.

        [^"]* ist eine möglichst lange Zeichenkette die aus allen Zeichen ausser " besteht.

        ([^"]*) speichert das ganze, hier damit es in $match[1] bis $match[count($match)] landet.

        sind (fast) beliebig gewählte Begrenzungszeichen.

        alle anderen Zeichen stehen für sich selber.

        Ungetestet.

        Gruss,
          Carsten

        1. nochmal hallo...

          hab nun den ganzen nachmittag damit verbracht, den code passend umzuformen!
          erfolglos!!!!!

          so sieht der html code aus:
          <html>
          <img src="../../PicDestStyleOver_List_Cross/Y23055_262.jpg" width="150" hspace="0" vspace="0" border="0"
          alt="te
          xt
          ">
          <img src="../../PicDestStyleOver_List_Cross/Y23055_262.jpg" width="150" hspace="0" vspace="0" border="0"
          alt="bla
          zeile2bla
          ">
          </html>

          der probierte php code sieht momentan so aus:
          preg_match_all("#<img src="([^"]*)"*>#",$text,$match);

          bekanntlich will ich nur die src parameter der img tags herausfinden...
          warum lässt mich php das nicht einfach tun :-( ?!

          *verzweifel*

          vielen dank für hilfe!!!!!

          1. Hi

            preg_match_all("#<img src="([^"]*)"*>#",$text,$match);

            ^^
            das ist falsch!
            Du meintest wohl
            preg_match_all("#<img src="([^"]*)".*>#",$text,$match);
                                                  ^^^
            beliebig viel von einem beliebigen Zeichen und dann ein >
            Das wäre aber auch falsch, denn das * (beliebig viel) ist gierig und frisst dir praktisch den gesammten Quelltext weg (alle bis auf das letzte > werden vom .(dem beliebigen Zeichen) gematcht): Du würdest nur einen Treffer bekommen. (Das erste <img...)

            Eigentlich kannst du das aber komplett weglassen, also so:
              preg_match_all("#<img src="([^"]*)"#",$text,$match);

            Gruss,
              Carsten

            P.S.: 'ungieriges' suchen wäre mit .*?