WordPress - 如何从textarea中清理多行文本而不会丢失换行符?

ban*_*ing 16 php wordpress textarea line-breaks sanitize

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

update_post_meta($post_id, 'message', sanitize_text_field($_POST['message']));
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

NME*_*ent 36

自Wordpress 4.7.0

使用sanitize_textarea_field而不是sanitize_text_field

  • 这是你们都在寻找的.应该替换其他答案. (2认同)

mpa*_*tek 33

更优雅的解决方案:

update_post_meta(
    $post_id,
    'message',
    implode( "\n", array_map( 'sanitize_text_field', explode( "\n", $_POST['message'] ) ) )
);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢 - 这不仅优雅,而且精彩. (3认同)