Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_replace problem

Einklappen

Neue Werbung 2019

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

  • preg_replace problem

    Hallo Euch allen, ihr habt in gutes forum aufgebaut, was mir das eine oder andere Mal ein nuetzlichen Hinweis geben konnte, weshalb ich mich bisher auch nicht registriete, da meine Fragen auch so beantwortet wurden.
    Jetzt bin ich an meine Grenzen gestossen und versuche seit Tagen einen regulaeren Ausdruck zu erstellen, der mir folgendes umwandeln sollte:

    "(two words)" in "\two words".

    Ich versuchte es auf alle erdenklichen Weisen, auch mit verschiedenen Bedingungen, bin aber zu keinem vernuenftigen Ergebnis gekommen. Meine aktuelle Versuchsvariante ist diese:
    Code:
        
        
        
    
    
    PHP-Code:
    $string="(two words)"; $test preg_replace("/\([^.*]\)/","\\",$string); 
    Es waere schoen, wenn mir jemand helfen koennte.

    Viele Gruesse Prometheus

  • #2
    Dein preg_replace() ergibt garkeinen Sinn,
    [^.*]
    bedeutet, dass garkein Zeichen vorkommen darf, ^ innerhalb von [] bedeutet Negation, und .* jedes mögliche Zeichen.
    \t ist übrigens das Tabulator-Steuerzeichen..

    Du willst also runde Klammer "two words" runde Klammer zu in Backslash "two words" umwandeln?

    PHP-Code:
    <?php
    $string 
    "(two words)";
    $test preg_replace("/\((two words)\)/""\\\1"$string);
    ?>
    Ungetestet.

    Edit: Oder 2 Wörter eben?

    Kommentar


    • #3
      @Zergling: danke fuer die Antwort, aber Dein Vorschlag geht leider auch nicht. Hab ihn getestet und versucht ein wenig zu variieren, aber kein Ergebnis.

      Dein preg_replace() ergibt garkeinen Sinn
      Danke fuer diesen Hinweis, denn mit [^.*] habe ich eigentlich versucht, dass, was zwischen den runden Klammer steht, aus der Ueberpruefung rauszuhalten, um es am Ende nach dem fuer die Klammern eingesetzten Backslash ranzuhaengen.

      Prometheus

      Kommentar


      • #4
        Lies dir mal nen RegExp Tutorial durch, weil 2 Wörter in einer Klammer zu erkennen ist wirklich ein Anfängerproblem.

        Hat meine Lösung denn ohne Abänderung funktioniert? Dann ersetz jedes Wort doch mal durch ein

        (.*)

        Alle geklammerten Muster kannst du mit \1 \2 etc. entsprechend der Reihenfolge, im 2. Parameter wieder verwenden.

        Kommentar


        • #5
          @Zergling:

          Dann ersetz jedes Wort doch mal durch ein (.*)
          Hab ich getan, das Ergebnis ist bspw. bei dieser Variante: "/\((.*)(\s(.*))?\)/" immmer "\" oder nur "\" ohne die Referenz "\1".

          Kommentar


          • #6
            Zitat von Prometheus
            immmer "\" oder nur "\" ohne die Referenz "\1".
            Was meinst du?

            Kommentar


            • #7
              Genau das gibt der Parser als Ausgabe zurueck.

              Ich versuche es mal weiterhin �ber ein definierte Bedingung wie (?(?!bedingung)true|false). Sollte ich irgendwann Erfolg haben, werde ich das Ergebnis posten. Danke fuer Deine Hilfe Zergling(oder besser Starcraft-Spieler?).

              Prometheus

              Kommentar


              • #8
                Natürlich StarCraft-Spieler, zock noch wöchentlich im Battle.Net. Hab da mit einem Account mittlerweile auch schon knapp 3500 Games aufm Buckl.

                Also zu regulären Ausdrücken nochmal:
                Geh das Problem mal Schritt für Schritt an. Probier erstmal diese Schnipsel mit regulären Ausdrücken zu erkennen

                var_dump(preg_match($regexpression, $string));

                Schnipsel:
                PHP-Code:
                <?php
                $string 
                "()";
                $string "genaudieseswort"// ok etwas sinnlos ;)
                $string "genaudiese zweiwoerter";
                $string "irgendeinwort"// Wörter variabel, z.B. [a-zA-Z_]
                $string "irgendwelche woerter";
                $string "(genaudiese zweiwoerter)";
                $string "(irgendwelche woerter)";
                ?>
                Schreib dann hier mal, an welchem String du mit welchem regulären Ausdruck scheiterst. Wenn dann später die Erkennung klappt, ist das Ersetzen ein Kinderspiel.

                Siehe auch:
                http://de.wikipedia.org/wiki/Regul%C...Ausdr%C3%BCcke

                Kommentar

                Lädt...
                X