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
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)
| 归档时间: |
|
| 查看次数: |
9521 次 |
| 最近记录: |