如何使用wordpress中的html清理文本字段

时间:2015-12-08 15:59:23

标签: wordpress validation sanitization

您好我的问题是如何正确清理包含html的输入字段。现在我做:

if( isset( $_POST[ 'obecnie' ] ) ) { update_post_meta( $post_id, 'obecnie', sanitize_text_field($_POST['obecnie' ])); }

sanitize_text_field是一个Wordpress函数,它从输入中删除所有html。我需要实现的是实际允许用户在输入中插入break标记或新行实体并在前端显示它。

2 个答案:

答案 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);