[REGEX] Ersetzen eines URLs

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

  • [REGEX] Ersetzen eines URLs

    Hi,

    ich verzweifle gerade an einem Regulärem Ausdruck. Undzwar will ich einen URL ersetzen.

    Der Quellcode sieht (abgekürzt) so aus:

    Code:
    <a href="verein-prn.html?zps=25101">Verein 1</a><br />
    <a href="verein-prn.html?zps=25103">Verein 2</a><br />
    <a href="verein-prn.html?zps=25104">Verein 3</a><br />
    Nun will ich das daraus wird:
    Code:
    <a href="test.php?zps=25101">Verein 1</a><br />
    <a href="test.php?zps=25103">Verein 2</a><br />
    <a href="test.php?zps=25104">Verein 3</a><br />
    An sich sollte das kein Problem sein, habe es mit folgendem RegExp probiert:

    PHP-Code:
    $inhalt preg_replace("/verein-prn.html?zps=(.*)/""test.php?zps=$1"$inhalt); 
    Allerdings wird nichts ersetzt. Ich weiß nicht mehr weiter, könnt ihr mir weiterhelfen, da ich da echt nicht weiterkomme?

    Danke!

  • #2
    und wozu preg_replace?

    ein einfaches str_replace('<a href="verein-prn.html?zps=', '<a href="test.php?zps=', $text) tut es doch auch.

    Kommentar


    • #3
      Es ist sowas von egal ob du preg_replace oder str_replace benutzt...
      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


      • #4
        Original geschrieben von Shurakai
        Es ist sowas von egal ob du preg_replace oder str_replace benutzt...
        Nein, in diesem Fall nicht.

        Ich habe euch natürlich nur die halbe Wahrheit erzählt, im Endeffekt ist das viel komplexer , denn ich will alle URLs im Dokument umschreiben, und ggf. ein paar Parameter anhängen. Da reichen mir die Stringfunktionen (leider) nicht aus.

        Dann muss ich mal anders fragen. Wie kann ich alle Links eines HTML Dokuments ausfindig machen, und einem String anhängen. In der FAQ (www.php-faq.de) konnte ich zwar einiges diesbezüglich finden, allerdings werde ich da nicht so ganz schlau draus.

        Danke.

        Kommentar


        • #5
          Original geschrieben von andru
          Dann muss ich mal anders fragen. Wie kann ich alle Links eines HTML Dokuments ausfindig machen, und einem String anhängen.
          suchst du eventuell output_add_rewrite_var()?

          Kommentar


          • #6
            Nein, da ich teilweiße auch den Pfad ändern will.

            Kommentar


            • #7
              Original geschrieben von andru
              Nein, da ich teilweiße auch den Pfad ändern will.
              na gut.
              wenn du in deinem beispiel noch . und ? mit \ maskierst, dann funktioniert es.

              Kommentar


              • #8
                Danke, soweit habe ich gar nicht gedacht .

                Jetzt komme ich auch weiter, allerdings hat sich jetzt ein neues Problem aufgetan. Nun habe ich die URL, diese will ich als Parameter an einen anderen URL hängen, sprich ich muss urlencode verwenden, allerdings komme ich nicht dahinter, wie das funktionieren soll, denn wenn ich es mit dem Modifier "e" probiere, bekomme ich entweder Fehlermeldungen, dass der entsprechende Abschnitt nicht ausgeführt worden konnte, oder es wird nicht ausgeführt!

                Mein bisheriger Versuch:

                PHP-Code:
                $inhalt preg_replace("/<a href=\"(.*)\"/e""<a href=\"urlencode($1)\""$inhalt); 
                Fehlermeldung:

                Parse error: syntax error, unexpected '<' in C:\xampp\htdocs\test.php(22) : regexp code on line 1

                Fatal error: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: &lt;a href=&quot;urlencode(http://www.schachbund.de/dwz/info.html\&quot; onfocus=\&quot;this.blur())&quot; in C:\xampp\htdocs\test.php on line 22
                Wie kann ich das nun lösen?

                Danke für die bisherige Hilfe.
                Zuletzt geändert von andru; 08.04.2007, 15:30.

                Kommentar


                • #9
                  den modifier e mag ich nicht so - preg_replace_callback() ist da übersichtlicher.
                  ansonsten könnte es so passen:
                  $inhalt = preg_replace("/<a href=\"(.*)\"/e", "'<a href=\"'.urlencode('$1').'\"'", $inhalt);

                  Kommentar

                  Lädt...
                  X