Kürzer schreiben, aber wie??
Jane
- php
0 fastix0 Henryk Plötz0 fastix
0 Tobias K.
Hall Ihr lieben,
wie kann ich das kürzer schreiben:
$neu = eregi_replace('`','´',(eregi_replace('´','´',(eregi_replace('"','´',(eregi_replace("'","´",$alt])))))));
Daaaaaanke,
Jane
_Eine_ Möglichkeit:
$weg= array("`", "´", """, "'")
for (i=0;i<$weg.length;i++) {
$neu = str_replace($weg[i],"´",$alt)
}
Moin,
Und ab PHP 4.0.5 sogar so:
$neu = str_replace(Array("`", "´", '"', "'"), "´", $alt);
Moin,
$neu = str_replace(Array("`", "´", '"', "'"), "´", $alt);
Oi! Geht auf Anhieb! Hab ich PHP 4.0.5 ??? :)))
fastix
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
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 :)
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 ´ eigentlich ist :-)]
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
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
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
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.