eregi_replace() killt newlines

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

  • eregi_replace() killt newlines

    ich möchte urls in einem text ändern (etwas vorne dranhängen).
    aus diesem posting hab ich mir die funktionen "ausgeliehen". das funktioniert jetzt auch. allerdings ist es so, dass die eregi_replace() funktion offenbar newlines aus einem text einfach löscht - ohne den funktionen sind absätze vorhanden - mit sind sie weg und es ist sozusagen ein endlos-text. es geht nicht um html-<br>'s - sondern "ascii-breaks" (oder wie man das auch immer nennt).

    hier mal das code-schnipfel:
    Code:
    $message = eregi_replace("\[url=([^\[]*)\]([^\[]*)\[/url\]","<a href=\"http://safeurl.de/?\\1\" target=\"_blank\">\\2</a>",$message);
    $message = eregi_replace("\[url\]([^\[]*)\[/url\]","<a href=\"http://safeurl.de/?\\1\" target=\"_blank\">\\1</a>",$message);
    gibt es eine möglichkeit, das mit preg_replace() zu realisieren, damit mir meine newlines erhalten bleiben?
    oder sonst eine abhilfe?

    gruss,
    redouble

    p.s. warum schmeisst der php-tag immer bei doppelten \\ einen raus? nur mit dem code-tag wird es unverfälscht dargestellt..

  • #2
    Re: eregi_replace() killt newlines

    Original geschrieben von redouble
    ich möchte urls in einem text ändern (etwas vorne dranhängen).
    aus diesem posting hab ich mir die funktionen "ausgeliehen". das funktioniert jetzt auch. allerdings ist es so, dass die eregi_replace() funktion offenbar newlines aus einem text einfach löscht - ohne den funktionen sind absätze vorhanden - mit sind sie weg und es ist sozusagen ein endlos-text. es geht nicht um html-<br>'s - sondern "ascii-breaks" (oder wie man das auch immer nennt).

    hier mal das code-schnipfel:
    Code:
    $message = eregi_replace("\[url=([^\[]*)\]([^\[]*)\[/url\]","<a href=\"http://safeurl.de/?\\1\" target=\"_blank\">\\2</a>",$message);
    $message = eregi_replace("\[url\]([^\[]*)\[/url\]","<a href=\"http://safeurl.de/?\\1\" target=\"_blank\">\\1</a>",$message);
    gibt es eine möglichkeit, das mit preg_replace() zu realisieren, damit mir meine newlines erhalten bleiben?
    oder sonst eine abhilfe?

    gruss,
    redouble

    p.s. warum schmeisst der php-tag immer bei doppelten \\ einen raus? nur mit dem code-tag wird es unverfälscht dargestellt..
    kannst du vielleicht etwas mehr code posten? weil vielleicht is ja ne regexp nicht notwendig, wenn du irgendwo was dranhängen willst

    schaun mer mal ...

    beebob

    Kommentar


    • #3
      hi.

      mehr code gibt es im prinzip nicht.
      in der variable $message befindet sich beitrags-text so wie hier im board. jetzt kann sich an beliebigen stellen in dem text ein link per http://<a href="http://" target="_bl...</a> irgendwas oder tada befinden. und die urls sollen eben mit dem zusatz in der url versehen werden.
      demnach geht es nur mit einem regulären ausdruck.
      da preg_replace() "näher" an den perl-spezifikationen arbeitet (so denke ich mal ) als ereg_replace() ... würde mich eben interessieren, ob es damit funktioniert...
      das anhängen an sich klappt ja - nur werden eben zeilenumbrüche dadurch entfernt, was ja nicht sinn der sache sein sollte.

      mfg,
      redouble

      Kommentar


      • #4
        haste schon mal sowas probiert?

        PHP-Code:
        $multiline "tex1t\ntext2";
        $slashed addslashes($multiline);

        $slashed eregi_replace("text1","neutext",$slashed);

        echo 
        stripslashes($slashed); 
        ... gesetzt den fall, die newlines sind noch nicht gequotet.

        kann grad nicht gucken, ob´s klappt, weil ich keinen webserver am start hab


        beebob
        Zuletzt geändert von beebob; 02.08.2002, 02:14.

        Kommentar


        • #5
          hallo!

          der hinweis war hilfreich, wenn auch nicht die lösung.

          nachdem es mit dem vorschlag keine änderung gab, hab' ich einfach zum nächsten gegriffen: nl2br()

          nach den eregi_replace() habe ich dann folgende zeile hinzugefügt:
          PHP-Code:
          $message nl2br($message); 
          damit war das problem gelöst

          danke für die unterstützung!

          gruss,
          redouble

          Kommentar

          Lädt...
          X