2012-03-29 4 views
0

Meine PHP-Anwendung fügt an vielen Stellen mit addslashes() Anführungsstriche zu Anführungszeichen hinzu. Leider hat diese Hinzufügung eine Ausgabe ähnlich der folgenden erzeugt.Wie halte ich die Wiederholung von Schrägstrichen an?

Jedes Mal, wenn ich meine Seite aktualisiere, erhöht sich die Anzahl der Backslashs in dieser Zeichenfolge.

nicht
don \ 't
don \\' t
don \\\\ 't
don \\\\\\\\' t

und so weiter.

Ich möchte eine Funktion schreiben, die alle diese zusätzlichen Backslashes löscht. Ich habe versucht

str_replace($text, "\\\\", ""); 

vergebens.

+1

Das Posten Ihres Codes wäre hilfreich. Es könnte ein magisches Zitatproblem sein, oder wie Sie Ihre addslashes verwendet haben, oder ... Code ist immer der beste Weg, spezifische Hilfe mit Ihrer Codierungsfrage zu erhalten. Aber ich stütze mich darauf, nur stripslashes für Ihre Ausgabe zu verwenden oder nur addslashes kurz vor einer mutmaßlichen Datenbankübergabe zu verwenden. – Blake

+2

Ich denke, die vernünftige Lösung ist, addslashes() überhaupt nicht aufzurufen. Fügen Sie Schrägstriche nur bei Bedarf manuell hinzu. – Kristian

Antwort

1

Sie können nur verwenden:

stripslashes($text); 
1
$text=preg_replace('/\134+/',"\134",$text); 
1

Was passiert, wenn Ihr tatsächlicher Wert \\ berechtigterweise schließen geschieht? Wenn sich Ihr Inhalt beispielsweise auf eine Share-Referenz im Windows-Stil bezieht - \\192.168.1.1\foo. Wenn Sie blind Doppelstriche abzustreifen, werden Sie diejenigen ausziehen, die gemeint sind, um auch dort zu sein.

Die "richtige" Antwort ist wirklich, keine Schrägstriche zu Dingen hinzuzufügen, die sie nicht brauchen. Sie sollten wissen, ob ein bestimmter Wert bereits maskiert ist oder nicht (schließlich steuern Sie, woher jeder Wert kommt und wofür er verwendet wird) und fügen nur Schrägstriche hinzu, wenn Sie sie benötigen.

Verwandte Themen