您好我的问题是如何正确清理包含html的输入字段。现在我做:
if( isset( $_POST[ 'obecnie' ] ) ) {
update_post_meta( $post_id, 'obecnie', sanitize_text_field($_POST['obecnie' ]));
}
sanitize_text_field是一个Wordpress函数,它从输入中删除所有html。我需要实现的是实际允许用户在输入中插入break标记或新行实体并在前端显示它。
答案 0 :(得分:4)
wp_kses在您调用时将字符串中的HTML标记和属性除去。
例如,只允许带有href属性的br标签和链接(但没有其他属性,甚至是样式或标题),你可以这样称呼:
$allowed_html = array(
'a' => array(
'href' => array(),
),
'br' => array(),
);
$str = wp_kses( $str, $allowed_html );
答案 1 :(得分:0)
不确定wordpress功能,但你可以试试这个功能清理htmlentities:
htmlentities($_POST['obecnie' ]);
然后您可以在显示任何地方之前将用户输入的换行符(实际换行符,而不是BR标签)转换为BR标签,如下所示:
preg_replace('/[\n\r]/', '<br />',htmlentities($_POST['obecnie' ]));
如果您要为用户提供编辑选项,您还需要记住还原换行符:
$textToBeShownInTextBox = str_replace('<br />',"\n", $textFromDb);