Jane: Kürzer schreiben, aber wie??

Hall Ihr lieben,

wie kann ich das kürzer schreiben:

$neu = eregi_replace('`','´',(eregi_replace('´','´',(eregi_replace('"','´',(eregi_replace("'","´",$alt])))))));

Daaaaaanke,

Jane

  1. _Eine_ Möglichkeit:

    $weg= array("`", "´", """, "'")
    for (i=0;i<$weg.length;i++) {
       $neu = str_replace($weg[i],"´",$alt)
    }

    1. Moin,

      Und ab PHP 4.0.5 sogar so:

      $neu = str_replace(Array("`", "´", '"', "'"), "´", $alt);

      --
      Henryk Plötz
      Grüße aus Berlin
      1. Moin,

        $neu = str_replace(Array("`", "´", '"', "'"), "´", $alt);

        Oi! Geht auf Anhieb! Hab ich PHP 4.0.5 ??? :)))

        fastix

    2. Hallo fastix,

      $weg= array("`", "´", """, "'")
      for (i=0;i<$weg.length;i++) {

      kann es sein, das du hier php und javascript durcheinander bringst :-) in php muss es nämlich ($i=0;$i<strlen($weg);$i++)

      $neu = str_replace($weg[i],"´",$alt)

      sollte es nicht eher statt '$alt' '$neu' heißen? Sonst wird dreimal was ersetzt und dabei das Ergebnis von dem Durchlauf vorher überschrieben.

      mein Vorschlag wäre:
      $neu = eregi_replace("[`´"']","´",$alt);
      obs funktioniert weiß ich allerdings nicht.

      Grüße aus Nürnberg
      Tobias

      1. kann es sein, das du hier php und javascript durcheinander bringst

        Ja. Das passiert mir andauernd. Aber man(n) kennt seine Fehler (und findet sie deshalb schneller...)

        Mit dem Überschreiben hast Du recht. Also:

        <?
        $alt="`plapla´"plapla'";
        $alt2=$alt;

        $weg= array("`", "´", """, "'");
        for ($i=0; $i<count($weg); $i++) {
          $alt = str_replace($weg[$i],"´",$alt);
        }
        echo $alt;
        ?>

        Ist jetzt ganz richtig (tested[tm] :)
        Aber immer noch nicht die einzige Methode:

        »»$neu = eregi_replace("[`´"']","´",$alt);

        obs funktioniert weiß ich allerdings nicht.

        Da hilft das, was ich hätte tun sollen: testen :)

        1. Hallo fastix,

          Aber immer noch nicht die einzige Methode:

          dann hat Jane ja jetzt schon 3 Möglichkeiten :-) (nein, ich sage jetzt nicht, dass mir meine am Besten gefällt :-))

          »»$neu = eregi_replace("[`´"']","´",$alt);

          hee, nicht das Leerzeichen nach dem Zitatzeichen wegmachen, sonst sehe ich ein '»»' statt meinem '>' :-)

          obs funktioniert weiß ich allerdings nicht.
          Da hilft das, was ich hätte tun sollen: testen :)

          ok, überredet *test* mhh... das " muss noch maskiert werden, dann funktioniert es:
          $neu = eregi_replace("[`´"']","´",$alt);

          Grüße aus Nürnberg
          Tobias [der jetzt wenigstens weiß, was &acute eigentlich ist :-)]

          1. Hallo fastix,

            Hallo Tobias!

            Dann darf ich jetzt auf:

            http://fastix.dyndns.org/tests/php4.php

            die getesteten Lösungen in Summa vorstellen.

            Es gehen doch nur 2 :(
            Deine und meine :)

            fastix

            1. Hallo fastix,

              http://fastix.dyndns.org/tests/php4.php
              die getesteten Lösungen in Summa vorstellen.

              bleibt abzuwarten, welche Lösung Jane nimmt :-)

              Es gehen doch nur 2 :(

              str_replace(Array("", "´", '"', "'"), "´", $alt2); was passiert wenn man das " maskiert? (ich kann es jetzt nicht ausprobieren, da ich immer nur Parse Error bekomme - frag mich nicht warum) also so: str\_replace(Array("", "´", """, "'"), "´", $alt2);
              evtl. auch noch das ' maskieren.

              Grüße aus Nürnberg
              Tobias

              1. Hallo Tobias

                str_replace(Array("`", "´", """, "'"), "´", $alt2);
                evtl. auch noch das ' maskieren.

                Vielleicht sind es ja doch drei: Ich hab noch PHP 4.02 und es soll laut Autor erst ab 4.05 gehen.

                Deine Lösung ist ein Einzeiler...

                fastix, Kassel

              2. Moin,

                was passiert wenn man das " maskiert? (ich kann es jetzt nicht ausprobieren, da ich immer nur Parse Error bekomme - frag mich nicht warum) also so:

                Da muss nichts maskiert werden, innerhalb von " " hat ' keine Sonderbedeutung und innerhalb von ' ' hat " keine Sonderbedeutung, ` hat in beiden Fällen keine Sonderbedeutung und ´ schon gar nicht.

                Nebenbei bemerkt: Das es noch so alte PHP-Installationen gibt, verblüfft mich ehrlich gesagt ein wenig, zumal es da einige Sicherheitsprobleme gab die offiziell nur in neueren Versionen gefixt sind (mindestens die File Upload-Geschichte http://security.e-matters.de/advisories/012002.html, aber das Change Log http://www.php.net/ChangeLog-4.php zeigt noch andere potentielle Probleme).

                Da kannst du dann nur hoffen, dass dein Distributor diese Fixes für alte Versionen rückportiert und du die entsprechenden Aktualisierungen eingespielt hast. Einige der für die Sicherheit nützlichen Funktionen (is_uploaded_file() etwa gibt es erst ab 4.0.3) fehlen dir dann allerdings immer noch.

                --
                Henryk Plötz
                Grüße aus Berlin