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