WordPress - 如何在不丢失换行符的情况下从文本区域清理多行文本?

2022-08-30 20:11:48

如果我清理并保存一些用户输入的元文本(称为“消息”),就像这样......

update_post_meta($post_id, 'message', sanitize_text_field($_POST['message']));

...然后检索并尝试像这样重新显示文本...

echo '<textarea id="message" name="message">' . esc_textarea( get_post_meta( $post->ID, 'message', true ) ) . '</textarea>';

...所有的换行符都会丢失。

根据WordPress codex,换行符被sanitize_text_field()函数剥离。那么,如何在不丢失换行符的情况下清理用户输入的文本呢?


答案 1

自 Wordpress 4.7.0 起

使用sanitize_textarea_field而不是sanitize_text_field


答案 2

更优雅的解决方案:

update_post_meta(
    $post_id,
    'message',
    implode( "\n", array_map( 'sanitize_textarea_field', explode( "\n", $_POST['message'] ) ) )
);

如果要清理文本字段,请使用此选项。sanitize_text_field


推荐