Problem mit preg_replace und \

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

  • Problem mit preg_replace und \

    Liebes Forum,

    ich möchte alle \ aus einem string löschen, leider funktioniert es nicht. Ich mache es folgendermaßen:

    PHP-Code:
    $txt=preg_replace('/\\/i','',$txt); 
    Ich habe auch schon gegoogled und leider nichts passendes gefunden.

    Danke für Eure Hilfe
    Gruss
    RON

  • #2
    ist n Witz, oder?

    str_replace("\\","",$subject);

    Kommentar


    • #3
      PHP-Code:
      $txt=preg_replace('/\\\\/'''$txt);
      // oder einfacher:
      $txt str_replace('\\\\\\'''$txt); 
      Gruss
      H2O

      Kommentar


      • #4
        funktioniert, danke.
        habe das nur mit preg_replace probiert und das geht scheinbar nicht.

        Danke nochmal

        Kommentar


        • #5
          habe das nur mit preg_replace probiert und das geht scheinbar nicht.
          Klar geht das auch mit den preg-funktionen. Nur ist das total übertrieben, wenn es nur darum geht einen String durch einen anderen (leeren) String zu ersetzen.

          Kommentar


          • #6
            Um's mal etwas zu verdeutlichen: Regex sind dafür gedacht, nach Muster zu suchen. Geht es um Konkrete Zeichen(ketten), lässt sich das ohne Regex simpler und performanter lösen.
            PHP-Code:
            // bad_example.php

            $str '/i/am/a/strange/string/';

            // tausche alle / gegen ein Leerzeichen
            $str str_replace('/'' '$text);

            // entferne / am Anfang der Zeichenkette
            $str ltrim($text'/');

            // entferne / am Ende der Zeichenkette
            $str rtrim($text'/');

            // tausche alle /, die einem Buchstaben folgen, gegen ein Leerzeichen
            $str preg_replace('/(?<=[a-z])\\//i'' '$text); 
            Grüße
            Nieder mit der Camel Case-Konvention

            Kommentar


            • #7
              Hallo nochmal,

              wenn ich folgendes probiere:

              PHP-Code:
              $txt=preg_replace('/\\/'''$txt); 

              erhalte ich immer die Fehlermeldung:

              PHP-Code:
              No ending delimiter '/' found 
              Also mit preg_replace funktionierts bei mir nicht. Eigentliches Ziel dieser Aufgabe ist Sonderzeichen umzuwandeln:

              z. B. \u00c4 in Ä bzw. &Auml;

              Am besten würde da wahrsacheinlich ein preg_replace_callback funktionieren.

              Viele Grüsse
              RON

              Kommentar


              • #8
                Da das zu suchende Zeichen und die Delimeter identisch sind, gibts zwei Optionen:
                1. anderen Delimeter wählen
                2. Zu suchendes Zeichen mit Backslash maskieren

                Grüße
                Nieder mit der Camel Case-Konvention

                Kommentar


                • #9
                  Da das Forum die \ schon mal gerne verschluckt, weiß ich natürlich nicht ob das Absicht ist, was du da machst...

                  ABER, wenn du vernünftig escapest, dann klappt das auch!

                  Kommentar


                  • #10
                    Original geschrieben von Griecherus
                    Da das zu suchende Zeichen und die Delimeter identisch sind[...]
                    Ähm, wie bitte?

                    Kommentar


                    • #11
                      Original geschrieben von TobiaZ
                      Ähm, wie bitte?
                      Wo habe ich nur wieder meinen Kopf
                      Ich meinte natürlich: Da der Backslash ein Maskierungszeichen ist, muss er selbst maskiert werden, um als "normales" Zeichen gewertet zu werden
                      Nieder mit der Camel Case-Konvention

                      Kommentar

                      Lädt...
                      X