mixmastertobsi: regulärer Ausdruck Sonderzeichen entfernen

Hallo,

ich habe ein Problem mit einem regulären Ausdruck.

Ich möchte, dass in einem Satz, vor dem Wort und nach dem Wort die Sonderzeichen entfernt werden. Folgendes hatte ich probiert, doch es klappt nicht. Wer hat mir einen Tipp?

$a = preg_replace("/\ [^a-zA-z0-9]+([a-zA-z0-9]+)\ /i", " $1 ", $a);
"test ichbindertext-/ test" => "test ichbindertext test"
"test =)ichbindertext-/ test" => "test ichbindertext test"
"test =))ichbindertext test" => "test ichbindertext test"
  1. @@mixmastertobsi

    Ich möchte, dass in einem Satz, vor dem Wort und nach dem Wort die Sonderzeichen entfernt werden.

    Was sind in diesem Kontext Sonderzeichen?

    LLAP 🖖

    --
    „Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.“ —Johann Wolfgang von Goethe
  2. Hallo mixmastertobsi,

    Ich möchte, dass in einem Satz, vor dem Wort und nach dem Wort die Sonderzeichen entfernt werden. Folgendes hatte ich probiert, doch es klappt nicht. Wer hat mir einen Tipp?

    Du suchst [\W_] oder [\W]?

    Bis demnächst
    Matthias

    --
    Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
    1. Hallo,

      sop klappt es fast...

      $a = preg_replace("/\ [\W ]+([\w]*)[\W ]+\ /i", " $1 ", $a);
      

      Allerdings möchte ich nun, dass er immer nach einem Leerzeichen trennt.

      Falsch

      "test -TEXT% - test" => "test TEXT test" 
      

      Richtig

      "test -TEXT% - test" => "test TEXT - test" 
      
      1. Hallo mixmastertobsi,

        Die Zeichenklasse \W enthält leider auch Leerzeichen.

        $a = preg_replace("/[^a-zA-Z0-9 ]+(\w+)[^a-zA-Z0-9 ]+/", " $1 ", $a);
        

        könnte zielführend sein.

        Bis demnächst
        Matthias

        --
        Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
        1. @@Matthias Apsel

          $a = preg_replace("/[^a-zA-Z0-9 ]+(\w+)[^a-zA-Z0-9 ]+/", " $1 ", $a);
          

          könnte zielführend sein.

          Könnte. Könnte aber auch nicht. Deshalb meine Frage, was denn hier „Sonderzeichen“ sind.

          LLAP 🖖

          --
          „Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.“ —Johann Wolfgang von Goethe
          1. Hallo,

            Sonderzeichen (in meinem Beispiel) sind alles, bis auf a-z, A-Z und 0-9.

            1. @@mixmastertobsi

              Sonderzeichen (in meinem Beispiel) sind alles, bis auf a-z, A-Z und 0-9.

              Darf man fragen, warum? Warum sind keine Umlaute oder andere diakritische Zeichen erlaubt?

              LLAP 🖖

              --
              „Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.“ —Johann Wolfgang von Goethe
              1. Sonderzeichen (in meinem Beispiel) sind alles, bis auf a-z, A-Z und 0-9. Darf man fragen, warum? Warum sind keine Umlaute oder andere diakritische Zeichen erlaubt?

                Klassiker wäre (auch 2017 noch): bei der Ablage von Dateien im Dateisystem. Die Beispiele des OP klangen allerdings nicht danach.

                1. @@Mitleser

                  Sonderzeichen (in meinem Beispiel) sind alles, bis auf a-z, A-Z und 0-9. Darf man fragen, warum? Warum sind keine Umlaute oder andere diakritische Zeichen erlaubt?

                  Klassiker wäre (auch 2017 noch): bei der Ablage von Dateien im Dateisystem.

                  ?? Welche 2017 in Benutzung befindliche OS kommt mit Umlauten oder andere diakritischen Zeichen in Dateinamen nicht klar?

                  LLAP 🖖

                  --
                  „Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.“ —Johann Wolfgang von Goethe
            2. Hallo,

              Sonderzeichen (in meinem Beispiel) sind alles, bis auf a-z, A-Z und 0-9.

              Also doch \w bzw. \W wenn Du mit dem Unterstrich als NichtSonderZeichen leben könntest.

              MfG

        2. Hallo Matthias,

          klappt leider nicht ganz.

          Beispiel wie es sein sollte. Aktuell bleiben die Zeichen "/-" vor Matratzen stehen.

          "Pure /-Matratzen • " => "Pure Matratzen • "
          
          1. Hallo mixmastertobsi,

            Ersetze die beiden äußeren Quantifikatoren durch *. Bei der Ersetzung brauchen dann keine Leerzeichen mehr hin.

            Bis demnächst
            Matthias

            --
            Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.