RegEx-Profis gefragt!!

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

  • RegEx-Profis gefragt!!

    Hallo ihr PHP-Profis!
    Leider kann ich mit RexExps nicht wirklich umgehen sobald es um komplexere Anwendungen geht. Deshalb erbitte ich eure Hilfe! Danke schön im Vorraus für eure Mühe!!

    Es geht um folgendes:
    Ich benutze einen WYSIWYG-Editor (SpawEditor) in meinem Projekt, der etwa folgenden Code erstellt. Um die vom User eingefügten Bilder in ein lokales Verzeichnis zu kopieren und im Dokument den Pfad zu verändern, müsste aus diesem Code...

    PHP-Code:
    <IMG src="/scholl/images/weblogo.gif">Die ist eine <EM>normale Website</EM>
    <
    FONT color=#ff0000>mit ein paar <STRONG>Bildern</STRONG> drin, die alle
    <IMG src="http://www.muenster.org/scholl/yes.jpg" align="right" height="10"absolut korrekte <U>Html4-Tags</U>
    <
    IMG src="http://www.server.de/user/html.png" align="right" width="15" hspace="5">  verwenden und</FONT>
    hoffentlich zu ersetzen sind
    .. dieser Code werden, bei dem sich alle Bilder-Pfade auf das gleiche Verzeichnis beziehen.

    PHP-Code:
    <IMG src="img/weblogo.gif">Die ist eine <EM>normale Website</EM>
    <
    FONT color=#ff0000>mit ein paar <STRONG>Bildern</STRONG> drin, die alle
    <IMG src="img/yes.jpg" align="img/right" height="10"absolut korrekte <U>Html4-Tags</U>
    <
    IMG src="img/html.png" align="right" width="15" hspace="5">  verwenden und</FONT>
    hoffentlich zu ersetzen sind
    Zudem sollte der ursprüngliche Bild-Pfad+Dateiname (also z.b.: '/scholl/images/weblogo.gif' oder 'http://www.muenster.org/scholl/yes.jpg') einem Array übergeben werden, mit dessen Hilfe es möglich ist, die Bild-Dateien in den "img"-Ordner zu kopieren.

    Ich würde da jetzt zumindest theoretisch so dran gehen: Eine RegExp bauen, die das Array erstellt (das ist das Hauptproblem), dann das Array durchlaufen und dabei in dem Dokument jeweils den original-Pfad durch basename(aktuelles array-element) ersetzen.

    Vielleicht habt ihr eine Ahnung wie man dieses realisieren könnte?!?

    Viele Grüße

    Sebi


    --------------
    www.muenster.org/scholl/

  • #2
    Re: RegEx-Profis gefragt!!

    RegEx-Profis gefragt!!
    *gähn*
    der ursprüngliche Bild-Pfad+Dateiname [...] einem Array übergeben werden,
    http://pcre.nophia.de/evaluate/f200a...dex.php#output
    erster unterausdruck (zeige) ... so?
    dieser Code werden, bei dem sich alle Bilder-Pfade auf das gleiche Verzeichnis beziehen.
    http://pcre.nophia.de/evaluate/a8513...dex.php#output
    ersetzung anschauen ... so? hmm, der ersatzstring steht unten im eingabefeld ...

    hab grad gesehen, daß dort noch eine ältere version läuft, hoffe, du kommst trotzdem zurecht ... kannst ja noch ein wenig basteln, wenns nicht paßt.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Re: Re: RegEx-Profis gefragt!!

      http://pcre.nophia.de/evaluate/f200a...dex.php#output
      erster unterausdruck (zeige) ... so?
      ja genau so...Kannst du bitte auch den code posten, mit dem man ein Array erhält, das man mit folgender Schleife auslesen kann?

      for($x=0;$x<sizeof($array);$x++) {
      echo current($array)."<br>\n";
      next($array);
      }

      so dass man dieses hier erhält? Ich krieg das einfach nicht hin..

      /scholl/images/weblogo.gif<br>
      http://www.muenster.org/scholl/yes.jpg<br>
      http://www.server.de/user/html.png<br>

      Ich habe folgenden Ausdruck verwendet:
      preg_match_all('<img.+src="(.+)".*>',$message,$array);
      Aber ich habe keine Ahnung wie ich jetzt an die obigen Pfade komme.


      http://pcre.nophia.de/evaluate/a8513...dex.php#output
      ersetzung anschauen ... so? hmm, der ersatzstring steht unten im eingabefeld ...
      Wie muss ich den Code bzw das Suchmuster verwenden?
      Folgender Ausdruck erzeugt die Warnung: Unknown modifier '('

      PHP-Code:
      preg_replace('(<img.+src=")(.+)([^/]+)(".*>)','/\1img/\3\4/',$str); 

      Kommentar


      • #4
        Re: Re: Re: RegEx-Profis gefragt!!

        Original geschrieben von 123456
        Ich habe folgenden Ausdruck verwendet:
        preg_match_all('<img.+src="(.+)".*>',$message,$array);
        Aber ich habe keine Ahnung wie ich jetzt an die obigen Pfade komme.
        1. preg_match_all
        2. print_r($array);
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Re: Re: Re: RegEx-Profis gefragt!!

          mann, mann ... wenn du absolut keine ahnung hast, dann leite deine posts bitte nicht mittels
          sobald es um komplexere Anwendungen geht
          ein.

          was meinst du, warum als erster punkt unter ausgabe 'regulärer ausdruck' steht? der ist zufälligerweise schon mit delimitern und modifiern versehen ...

          schau auch mal: http://www.php-resource.de/tutorials/read/10/1/

          warum du übrigens im ersatz vom preg_replace plötzlich / drin stehen hast, ist mir auch schleierhaft ...
          OffTopic:
          wenns garnicht klappt, dann warte doch noch ein paar tage, dann ist die neue version sicherlich online
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            juhuuu

            Danke für eure Hilfe! Es klappt jetzt mit folgendem Code:


            PHP-Code:
            $str "Html-Code mit Bildern drin";

            $str_neu preg_replace('#(<img.+src=")(.+)([^/]+)(".*>)#isU','\1img/\3\4',$str);
            echo 
            $str_neu;  // neuer String mit ersetzten Bild-Pfaden

            preg_match_all('/<img.+src="(.+)".*>/isU',$str,$array);  // Array mit Pfaden erstellen

            for($x=0;$x<sizeof($array[1]);$x++) {  // alte Pfade aus dem Array auslesen                      
              
            echo current($array[1])."<br>";
              
            next($array[1]);

            Viele Grüße aus Münster

            Sebi

            Kommentar

            Lädt...
            X