Hilfe! Reguläre Ausdrücke....

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

  • Hilfe! Reguläre Ausdrücke....

    Hallo Forum,

    in meinem Forum können beim Erstellen von Beiträgen genau wie es auch in diesem Forum möglich ist, über gewisse Tags Formatierungen vorgenommen werden. So wird über z. B. der [ color ] - Tag später in HTML-Code geändert und zwar über das Ersetzen eines regulären Ausdrucks:

    PHP-Code:
    $message eregi_replace("\\\[color=([^\\[]*)\\\]([^\\\[]*)\\\[/color\\]",
    "<font color=\\\1>\\\2</font>",$message); 
    Bei den Backslashes handelt es sich in obiger PHP-Anweisung immer um Doppel-Backslahes \ \ (wird von diesem Forum nicht korrekt angezeigt).

    Die PHP-Zeile bewirkt, dass z. B.

    [ color = red ]Test[ /color ]
    durch
    <font color="red">Test</font>
    ersetzt wird.

    Über das [ img ] Tag können Bilder eingefügt werden. Da sich nun die Adresse vieler abgelegter Bilder geändert hat (neue Domain), möchte ich die alten Bild-Adressen durch die neue ersetzen. Der Bild-Name ändert sich nicht, nur die Adresse. Dafür benötige ich einen weiteren regulären Ausruck.

    Folgendes möchte ich ersetzen:
    [ img ]http://www.url.de/tmp/pic0001.jpg[ /img ]
    soll durch
    <img src="http://www.server_neu.de/ordner_neu/pic0001.jpg">
    ersetzt werden.

    (Leerzeichen in den Tags bitte wegdenken.)

    Wie kann ich das ähnlich wie oben beim color-Tag umsetzen? Mit den regulären Ausdrücken bin ich leider nicht fit genug, um das umzusetzen. Könnte mir jemand helfen?

    Gruß,
    Chriss

  • #2
    hmm,

    Code:
    $Result = preg_replace ("/\[img\].*\/(.*\.jpg)\[\/img\]/i", "<img src=\"http://www.server_neu.de/ordner_neu/\\1\" alt=\"every image should have an alt-attribute\" />", $Target);
    getestet! funktioniert sogar.

    sollte das forum slashes verschlucken, kannste den code aus dem zitat übernehmen ...
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Vielen Dank erstmal für den Tipp!

      Aber er hilft mir noch nicht ganz weiter...

      Ich möchte ja nicht sämtliche Bilder vom neuen Server laden, sondern nur
      die, die auf dem alten Server abgelegt waren. Viele Bilder sind auch wer
      weiß wo im Internet abgelegt und sollen auch weiterhin von dort geladen
      werden. Wichtig wäre also, dass eine Ersetzung nur stattfindet, wenn das
      Bild bisher auf www.url.de/tmp gelegen hat.

      Der reguläre Ausdruck müsste also um den alten URL erweitert werden.
      Aber genau da liegt mein Problem. Wie kann ich den alten URL regulär
      ausdrücken?

      Gruß,
      Chriss

      Kommentar


      • #4
        hmm,

        witzig. wenn du die alte url nicht angibst, kann selbst ich sie nicht in einen regexp packen ...
        Code:
        [img\].*\/(.*\.jpg)
        hier steht zwischen [img] und (.+\.jpg) die alte url, .... brauchste nur anpassen
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Original geschrieben von derHund
          Code:
          [img\].*\/(.*\.jpg)
          hier steht zwischen [img] und (.+\.jpg) die alte url, .... brauchste nur anpassen
          Wenn ich aber den URL dawischen packe, dann funzt es nicht:

          PHP-Code:
          Result preg_replace ("/\[img\]http://www.url.de/tmp/(.*\.jpg)\[\/img\]/i""<img src=\"http://www.server_neu.de/ordner_neu/\\1\"
          alt=\"every image should have an alt-attribute\" />"
          $Target); 
          Irgendwas stimmt da mit der Syntax nicht. Der URL http://www.url.de/tmp/ müsste noch korrekt formatiert werden.
          Sorry, wie gesagt, sind die regulären Audrücke nicht ganz mein Ding...

          Chriss

          Kommentar


          • #6
            Code:
            $Result = preg_replace ("/\[img\]http:\/\/www\.url\.de\/tmp\/(.*\.jpg)\[\/img\]/i", "<img src=\"http://www.server_neu.de/ordner_neu/\\1\" alt=\"every image should have an alt-attribute\" />", $Target);
            metazeichen müssen geslashed werden!

            geht das?
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              @derHund: Vielen Dank! Nun hat's geklappt!

              Gruß,
              Chriss

              Kommentar

              Lädt...
              X