Bobby: preg_replace regex-Problem

Moin

Ich steh grad bissl aufn Schlauch:

<input name="Search" class="submit" type="submit" value="Suche starten" />

soll ersetzt werden.

$this->inhaltreturn = preg_replace('~<input( ){1}name=\"([a-zA-Z0-9\-_]+)\"( ){1}class=\"submit\"( ){1}type=\"submit\"( ){1}value=\"(.*?)\"( ){1}\/>~','<span class="submit" id="$2">$6</span>',$this->inhaltreturn);

sollte doch den String oben finden? Wo liegt mein Fehler?

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
## Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  1. Moin

    OK. Regex stimmt. Es kommen nur Slashes aus der DAtenbank die ich vergessen habe vorher zu entfernen

    $this->inhaltreturn = preg_replace('~<input( ){1}name=\"([a-zA-Z0-9\-_]+)\"( ){1}class=\"submit\"( ){1}type=\"submit\"( ){1}value=\"(.*?)\"( ){1}\/>~','<span class="submit" id="$2">$6</span>',stripslashes($this->inhaltreturn));

    funktioniert nun.

    Gruß Bobby

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
    ### Henry L. Mencken ###
    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
    ## Viktor Frankl ###
    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
    1. OK. Regex stimmt. Es kommen nur Slashes aus der DAtenbank die ich vergessen habe vorher zu entfernen

      Ich denke du hast eher vergessen, dass du sie garnicht erst reinschreiben solltest :)

      1. Moin

        magic_Quotes sind leider on bei mir. d.H. bei jedem Absenden eines Formulars werden automatisch slashes hinzugefügt. Und ich hab mal gelernt, das in die Datenbank so abgespeichert wird wie vom Formular abgesendet. Das heißt mit allen Zeichen. Bei der Ausgabe behandel ich dann die Strings entsprechend. (stripslashes, htmlspecialchars, strip_tags usw)

        Gruß Bobby

        --
        -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
        ### Henry L. Mencken ###
        -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
        ## Viktor Frankl ###
        ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
        1. Und ich hab mal gelernt, das in die Datenbank so abgespeichert wird wie vom Formular abgesendet. Das heißt mit allen Zeichen. Bei der Ausgabe behandel ich dann die Strings entsprechend. (stripslashes, htmlspecialchars, strip_tags usw)

          Wer auch immer dir das beigebracht hat hatte recht, du hast das aber vermutlich falsch verstanden - damit ist gemeint, dass du beim Speicher in die Datenbank keinerlei Maskierung vornimmst - auch keien automatische.

          stripslashes gehört also schon vor dem Schreiben in die Datenbank gemacht, wenn magic_quotes an ist bzw. bevor du auch nur ansatzweise $_POST oder ähnliches anrühst:

          http://www.php.net/manual/de/security.magicquotes.disabling.php - zweites Beispiel.

          htmlspecialchars() natürlich erst bei der Ausgabe.

        2. Hi,

          magic_Quotes sind leider on bei mir. d.H. bei jedem Absenden eines Formulars werden automatisch slashes hinzugefügt.

          Nein. Die werden erst von PHP, wenn es die Formulardaten in Empfang nimmt, dazugemurkst.

          Und ich hab mal gelernt, das in die Datenbank so abgespeichert wird wie vom Formular abgesendet.

          Eben. Wie abgesendet. NICHT wie von PHP vermagicquoted.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.