Guma: str_replace mit Backslash bringt ungewünschtes Ergebnis

Hallo Zusammen,
ich lasse gerade den tag </P> mit zwei br's ersetzen:

$LONG_TEXT = str_replace("</P>", "<br><br>", $LONG_TEXT);

Bekomme aber als Ergebnis <br /><br /> ist das komisch oder klar?

Bitte um Hilfe, Guma

  1. Hi Guma!

    ich lasse gerade den tag </P> mit zwei br's ersetzen:

    Wozu?

    <br><br>

    Ohjemine.

    Bekomme aber als Ergebnis <br /><br /> ist das komisch oder klar?

    Keine Ahnung. Am geposteten Code kann man ja nicht sehen, was passiert.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Danke für Deine Antwort H☼psel

      ich lasse gerade den tag </P> mit zwei br's ersetzen:
      Wozu?

      Nun die user können selten weiche Umbrüche und harte Umbrüche nicht unterscheiden. Sie nutzen meisst return und da setzt mein Textfeld (FCKEditor) ein <P>. Das verursacht aber einen ganzen Absatzsprung. Soll nur in der nächsten zeile weitergeschrieben werden benötige ich ein br. deshalb ersetze ich das.

      Guma

  2. Hallo,

    das läßt sich bei mir nicht nachvollziehen. Ist es möglich, daß Du einen Browser nutzt, der bei der Anzeige des Quelltextes eine Konvertirung vornimmt?

    Gruß aus Berlin!
    eddi

  3. hi,

    ich lasse gerade den tag </P> mit zwei br's ersetzen:

    Wofür soll das denn gut sein?

    $LONG_TEXT = str_replace("</P>", "<br><br>", $LONG_TEXT);

    Bekomme aber als Ergebnis <br /><br /> ist das komisch oder klar?

    Bist du wirklich sicher, dass dein str_replace erfolgreich war?
    Bist du wirklich sicher, dass du den Rückgabewert auch wirklich verwendet hast?
    Bist du wirklich sicher, dass du kein nl2br() auf die Daten angewendet hast?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo Wahsager,

      Wofür soll das denn gut sein?

      • habe ich weiter unten geschrieben.

      Bist du wirklich sicher, dass dein str_replace erfolgreich war?

      mit <p> geht es mit </p> nicht, liegt es am backslash?

      Bist du wirklich sicher, dass du kein nl2br() auf die Daten angewendet hast?

      Nein kannte ich noch nicht. Was nl2br() macht lese ich gerade nach.

      Guma

      1. 你好 Guma,

        mit <p> geht es mit </p> nicht, liegt es am backslash?

        Es ist ein (Fore-)Slash, kein Backslash. Das ist nämlich der hier: \

        再见,
         克里斯蒂安

        --
        Interessante Kommunikation | Modifiziertes Code-Folding mit TextMate
        Es gibt keinen Ort, wo der Geist zu finden waere. Er ist wie die Fussspuren der Voegel am Himmel.
        http://wwwtech.de/
    2. FCKEditor macht aus <br> immer <br />, das liegt wohl an der Programmierung. ist das denn gut so? mir gefällt <br> besser. was bewirkt denn das /-Zeichen danach?

      Guma

      1. gudn tach!

        FCKEditor macht aus <br> immer <br />, das liegt wohl an der Programmierung. ist das denn gut so? mir gefällt <br> besser. was bewirkt denn das /-Zeichen danach?

        http://de.selfhtml.org/html/text/zeilenumbruch.htm#erzwingen
        "Wenn Sie XHTML-Standard-konform arbeiten, müssen Sie das br-Element als inhaltsleer kennzeichnen. Dazu notieren Sie das alleinstehende Tag in der Form <br />. Weitere Informationen finden Sie im Kapitel Kapitel XHTML und HTML."

        prost
        seth

        1. Ich verstehe seth,

          vielen dank für die Info.

          Guma

    3. Gut, das habe ich verstanden.

      Ich würde nich gerne folgendes hinbekommen.
      Manchmal steht am ende eines Text-strings noch ein <br />, welches ich entfernen möchte. Nur dieses, wenn das geht und nur, wenn es da ist. kann ich die letzten 6 zeichen prüfen und genau dort mein str_replace machen?

      Guma

      1. gudn tach!

        Ich würde nich gerne folgendes hinbekommen.

        s/(n)(ich)/$1aeml$2/ ?

        Manchmal steht am ende eines Text-strings noch ein <br />, welches ich entfernen möchte. Nur dieses, wenn das geht und nur, wenn es da ist.

        s/<br />$//
        also in php-syntax: preg_replace('/<br />$//', '', ...)

        kann ich die letzten 6 zeichen prüfen und genau dort mein str_replace machen?

        ja, auch das ist moeglich, und zwar z.b. mit substr_replace.

        prost
        seth

        1. gudn tach!

          kann ich die letzten 6 zeichen prüfen und genau dort mein str_replace machen?

          ja, auch das ist moeglich, und zwar z.b. mit substr_replace.

          hmm, substr_replace kann gar nicht so viel, wie ich zunaechst dachte. also besser ohne substr_replace, sondern so, wie du selbst schon vermutet hast:

          $str=substr($str, 0, -6).str_replace('<br />', '', substr($str, -6));

          prost
          seth

          1. Danke, so klappt es prima, damit es gelingt genau so wie ich es wollte.

            guma

      2. Nochmal hallo, ICH HABE ES SO VERSUCHT:

        $MY_TEXT_KURZ = substr($MY_TEXT, 0, -20);
        $MY_TEXT_ENDE = substr($MY_TEXT_ENDE, -20);
        $MY_TEXT_ENDE = str_replace("<br />", "", $MY_TEXT_ENDE);
        $MY_TEXT = $MY_TEXT_KURZ.$MY_TEXT_ENDE;

        so wollte ich es:

        • textstring minus den letzten 20 zeichen einlesen
        • textendestring (20zeichen) einlesen diese prüfen ob "<br />" vorkommt, wenn ja str_replace
        • beide strings danach wieder zusammenfügen.
        • ergibt den Endstring. ! Leider fehlen dem finalem mytextstring noch einige zeichen. Wo sind die geblieben?!

        Greetings Guma

        1. gudn tach!

          Nochmal hallo, ICH HABE ES SO VERSUCHT:

          $MY_TEXT_KURZ = substr($MY_TEXT, 0, -20);
          $MY_TEXT_ENDE = substr($MY_TEXT_ENDE, -20);

          PHP Notice:  Undefined variable: MY_TEXT_ENDE in Command line code ...

          $MY_TEXT_ENDE = str_replace("<br />", "", $MY_TEXT_ENDE);

          in einfachen anfuehrungszeichen braucht man slashes nicht maskieren:

          $MY_TEXT_ENDE = str_replace('<br />', '', $MY_TEXT_ENDE);

          prost
          seth

          1. Danke seth habe ich geändert. trotzdem habe ich noch keine gültige funktionsfähige Lösung.

            Guma

          2. 你好 seth,

            $MY_TEXT_ENDE = str_replace("<br />", "", $MY_TEXT_ENDE);

            in einfachen anfuehrungszeichen braucht man slashes nicht maskieren:

            In doppelten auch nicht.

            再见,
             克里斯蒂安

            --
            Interessante Kommunikation | Modifiziertes Code-Folding mit TextMate
            Zu wissen, was wir nicht wissen, ist die Quelle der Weisheit.
            http://wwwtech.de/
            1. gudn tach!

              $MY_TEXT_ENDE = str_replace("<br />", "", $MY_TEXT_ENDE);

              in einfachen anfuehrungszeichen braucht man slashes nicht maskieren:

              In doppelten auch nicht.

              hihi, oops, das kommt bestimmt von den vielen regexp. die machen, glaube ich, so ein bissl dumm.

              prost
              seth

  4. Hallo,

    ich lasse gerade den tag </P> mit zwei br's ersetzen:

    und du bist dir darüber im Klaren, dass du unsauberes HTML bzw. sogar ungültiges XHTML erzeugst, wenn du nur das schließende Tag </p> ersetzt, das öffnende <p> aber stehenlässt?

    Schönen Abend noch,
     Martin

    --
    Lebensmotto der Egoisten:
    Was ist so schlimm daran, dass jeder nur an sich selbst denkt? Dann ist doch an alle gedacht!
    1. danke für die info, ich ersteze selbstverst. davor das <p> ebenso. nur nicht aufgezeigt...
      guma