preg_replace komplette Zeile

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

  • preg_replace komplette Zeile

    Soooo...

    Ich habe folgendes:
    Eine HTML in der ich gerne alle relativen Links zu Grafiken in eindeutige umwandeln würde.

    Mit:
    PHP-Code:
    $tmpl preg_replace("/(src=(\'|\")(?!http)(.*)(.*(\.jpg|\.gif|\.png)))/"
    "src=\"http://www.meinedomain.net/\\3\\4"$tmpl); 
    funktioniert das auch wunderbar, bis auf die Tatsache, das, wenn in der HTML zwei Links in einer Zeile stehen, nur der erste ersetzt wird!?
    Warum!?

    Bsp.:
    Code:
    <html>
    <head>
    <title>Bla!</title>
    </head>
    <body>
    <img src="imgages/bla1.jpg>
    <img src="imgages/bla2.jpg>
    <img src="imgages/bla3.jpg>
    wird wunderbar ersetz und sieht dann so aus:
    Code:
    <html>
    <head>
    <title>Bla!</title>
    </head>
    <body>
    <img src="http://www.meinedomain.net/imgages/bla1.jpg>
    <img src="http://www.meinedomain.net/imgages/bla2.jpg>
    <img src="http://www.meinedomain.net/imgages/bla3.jpg>
    Aber bei:
    Code:
    <html>
    <head>
    <title>Bla!</title>
    </head>
    <body>
    <img src="imgages/bla1.jpg><img src="imgages/bla2.jpg>
    kommt dann folgendes raus:
    Code:
    <html>
    <head>
    <title>Bla!</title>
    </head>
    <body>
    <img src="http://www.meinedomain.net/imgages/bla1.jpg><img src="imgages/bla2.jpg>
    Gibts nen Parameter mit dem ich angeben kann das er nicht nach dem Finden und ersetzen in eine neue Zeile springt? Hab im Manual nichts gefunden.

    Der Mensch ist ein Tier das zuviel denkt!

  • #2
    dein .* matcht soviele zeichen wie es kann - alle zeichen, außer dem \n (newline) ....

    um nicht soviel schwätzen und erklären zu müßen, habe ich einfach mal die page von derHund hier ausm Forum bemüht damit du deinen Fehler selber siehst:

    http://pcre.nophia.de/evaluate/dd627...dex.php#output


    du solltest aus diesem Grunde vielleicht mal über den Modifier U nachdenken .... (oder die lazy-versionen (oder "non-greedy" versionen) von den modifiern benutzen ... also *? )

    P.S.: Image-Src-Tags werden in " eingeschlossen, also src="bla.jpg" und nicht src="bla.jpg ... letzteres kann einiges an ärger geben :-)
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Original geschrieben von Shurakai

      P.S.: Image-Src-Tags werden in " eingeschlossen, also src="bla.jpg" und nicht src="bla.jpg ... letzteres kann einiges an ärger geben :-)
      Ist ja zum Glück nur ein Beispiel?

      Also ich setz mich mal hin und probiers aus. Danke!
      Der Mensch ist ein Tier das zuviel denkt!

      Kommentar


      • #4
        Original geschrieben von haSta
        Ist ja zum Glück nur ein Beispiel?
        Ist ja egal, war mir nur aufgefallen und wollts nurnoch sagen
        Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
        var_dump(), print_r(), debug_backtrace und echo.
        Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
        Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
        Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

        Kommentar

        Lädt...
        X