Gemäß dem WordPress-Codex werden die Zeilenumbrüche durch die Funktion sanitize_text_field() entfernt. Wie kann ich also den vom Benutzer eingegebenen Text bereinigen, ohne dass die Zeilenumbrüche verloren gehen?
Danke dafür. Es ist eine Schande, dass es keine Möglichkeit gibt, die oberste Antwort zu ändern – besonders. da es Jahre dauern kann, bis diese Antwort mehr positive Stimmen erhält als die ausgewählte Top-Antwort.
– Ban-Geoengineering
8. Mai 2017 um 7:39 Uhr
Das ist der, nach dem Sie alle suchen. Sollte die anderen Antworten ersetzen.
Verwenden sanitize_text_field wenn Sie das Textfeld bereinigen möchten.
Danke – das ist nicht nur elegant, sondern genial.
– Ryan Burney
8. Dezember 2014 um 3:58 Uhr
Ich würde die Benutzereingabe nicht ändern, sondern einfach ein Post-Meta einfügen, indem ich direkt $wpdb->query() verwende, was die Langeweile von WordPress bei der Meta-Eingabe-Bereinigung vermeiden würde, die Sie für Ihren speziellen Fall nicht benötigen.
– Meglio
10. Juli 2015 um 1:29 Uhr
Wenn Zeilenumbrüche das sind nur Ding sanitize_text_field ist das Entfernen, das Sie behalten möchten, könnten Sie gerade str_replace zum "\n" vor und nach dem Anruf sanitize_text_field.
$fake_newline="--OMGKEEPTHISNEWLINE--"; # or some unique string
$escaped_newlines = str_replace("\n", $fake_newline, $_POST['message']);
$sanitized = sanitize_text_field($escaped_newlines);
update_post_meta($post_id, 'message', str_replace($fake_newline", "\n", $sanitized));
Wenn Sie die Bereinigung stärker anpassen möchten, sollten Sie wahrscheinlich auf eine feinere Granularität setzen sanitize_* Funktionen, die von WordPress bereitgestellt werden.
Danke dafür. Ein paar Fehler in Ihrem Code, aber ich verstehe die Idee. Hier ist der Arbeitscode: $NEW_LINE = “\n”; $NEW_LINE_SUBSTITUTE = “NEWLINE-SUBSTITUTE”; update_post_meta($post_id, ‘message’, sanitize_text_field( str_replace($NEW_LINE, $NEW_LINE_SUBSTITUTE, $_POST[‘message’] )) ); echo ‘‘;
– Ban-Geoengineering
7. Dezember 2013 um 17:43 Uhr
piersb
Ich habe versucht, diese Methode selbst zu verwenden, und festgestellt, dass Apostrophe im Textbereich beim Hineingehen durch Backslashes maskiert werden, die dann beim Hinausgehen nicht von esc_textarea entfernt werden.
Also habe ich am Ende verwenden müssen
stripslashes( esc_textarea( $THING ) )
um sie bei der erneuten Anzeige erfolgreich aus dem Textbereich zu entfernen.
Ich habe alles versucht, der einzige Weg, wie ich das zum Laufen bringen konnte, war folgender: