Fehler bei "ereg_replace"
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausdruck
befehl
beispiel
eingabe
erledigt bitte
fehler
formular
funktion
kurzer sinn
laut
markierung
maskierung
normalerweise
pack
problematisch
schauen
show
spezielle bedeutung
zeichenkette
zeile
-
Sers leutz
habe in meinem script folgenen Fehlercode, wei? aber ned was der bedeutet:
WARNING: ereg_replace(): REG_EESCAPE:
hier noch die Zeile in der der Fehler sein soll und die darauffolgende:$_GET['show'] = ereg_replace("\\","\\\\",$_GET['show']); $_GET['show'] = nl2br($_GET['show']);
kann mir da vielleicht jemand helfen?
andinator -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Soweit ich das verstehe, m?chtest Du alle "\" verdoppeln, oder?
Laut Posix darf ein regul?rer Ausdruck nie mit einem "\" enden, bei Dir ist das der Fall. Um die spezielle Bedeutung von "\" zu verlieren, kannst Du es in "[" .. "]" packen, dann wird das Zeichen eben genau als "\" interpretiert. Lange Rede kurzer Sinn:
ereg_replace("[\]", "\\\\", ....
funktioniert. -
ich wil verhindern, dass wenn ein user in einem eingabefeld einen backslash eingibt, dass ideser als php-markierung interpreitert wird.
andinator -
Warum sollte ein "\" als php-Markierung interpretiert werden?
Es gibt die Funktion "stripslashes", die entfernt "\" die Dinger.
Schau' Dir mal die anderen Funktionen wie
addslashes
quotemeta
usw.
an, evtl. ist etwas dabei, was Du suchst. -
aber "\" ist doch normalerweise die Maskierung f?r andere PHP-Zeichen.
z.B. muss man bei html befehlen vor ein " einen Backslash stellen \" damit es f?r den HTML-Befehl benutzt wird.
Und ich will halt dass die Backslashes die ein User eintippt angezeigt werden, und nicht als Maskierung interpretiert werden.
Wie mache ich das?
andinator -
Mir ist immer noch nicht ganz klar, was genau Du erreichen willst.
Der Benutzer gibt ?ber ein Formular eine Zeichenkette ein. Diese m?chtest Du wieder ausgeben, willst aber dabei verhindern, dass diese als PHP-Code interpretiert wird, oder?
Eigentlich werden Zeichenketten nicht interpretiert, au?er Du rufst "eval()" auf.
Vielleicht schreibst Du mal ein Beispiel auf, also welche Zeichenkette problematisch w?re. Ich glaube fast, dass "addslashes()" ausreichend ist.
-
ich muss das deshalb machen, da der eingegebene Text md5 verschl?sselt wird.
und dann erst der hashwert von der vorherigen eingabe ausgegeben wird.
und die "\" sollen halt mitverschl?sselt werden.
andinator -
Also ich sehe da kein Problem. Hier ist mein kleines Testprogramm:
<?php
if (isset($teststr)) {
echo $teststr.md5($teststr)."<br>\n";
$teststr = ereg_replace("[\]", "\\\\", $teststr);
echo $teststr.md5($teststr);
}
?>
<form action="test.php" METHOD=POST>
<input type="text" name="teststr"/>
</form>
Wenn Du das mal ausprobierst, siehst Du, dass "\" automatisch maskiert werden. Das "ereg_replace()" ist doch dann ?berfl?ssig. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage