Frage

Ich bin etwas Text von geschabt Bahn in meine Datenbank einfügen. einige der Felder in der Zeichenfolge haben unprintable / seltsame Zeichen. Zum Beispiel:

if text is "C__O__?__P__L__E__T__E", 
then the text in the database is stored only as "C__O__"

Ich weiß, über h (), strip_tags () ... sanieren, ... etc etc. Aber ich will nicht über diese SQL sanieren. Die Active protokolliert die SQL korrekt, und wenn in phpMySQL ausführen, wird die Abfrage korrekt ausgeführt. etwas passiert zwischen der SQL-Abfrage Generation und es ausgeführt wird.

Die Hilfe wird sehr geschätzt.

War es hilfreich?

Lösung 3

Hmmmm .. mit CGI Flucht, fand ich heraus, dass das Zeichen in das System kommt, ist nicht das, was ich erwartet hatte, es zu sein. Es ist nicht ein Fragezeichen (% 3F), aber ein Fragezeichen (% D5).

C__%D5__M__P__L__%80___T__%80__
C__%3F__M__P__L__%3F___T__%3F__

Schließlich gsubbed ich die nicht druckbare Zeichen aus vor dem Speichern.

gsub(/[^[:print:]]/, '')

Erst nach den ungültigen Zeichen in meinen Zeichenfolge zu entfernen, konnte mir den Artikel richtig speichern. Keiner der anderen Lösungen gearbeitet, teilweise, weil das Problem nicht eindeutig im Voraus verstanden wurde.

Andere Tipps

Genau das Fragezeichen in der Zeichenfolge mit einem String ersetzen ein Fragezeichen enthält, habe ich keine andere Möglichkeit, entweder gefunden:

[ "C__O __? __ P__L__E__T__E", '?']

funktioniert perfekt.

Können Sie das Fragezeichen mit Escape "\?"?

Ich weiß, so spät ist, aber ich lief in das gleiche Problem, wenn wir eine Datei als UTF-8 zu verarbeiten versuchen, die tatsächlich die ISO-8859-1-Zeichenkodierung verwendet. Ich vermute, dass Sie in Ihrem Schaben ein ähnliches Problem hatten, wo Sie die falsche Codierung angenommen, und es endete verursacht Dinge zum Scheitern verurteilt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top