我不知道为什么这里被接受的答案被接受了,因为它实际上是行不通的。
OP是如何清理电子邮件content. sanitize_email()
清理电子邮件address. 当然,它不会抛出错误,但实际上不会do 任何东西
要清理内容,取决于内容的实际意图,以确定合适的内容。
一种普遍的可能性是sanitize_textarea_field
. 这是针对HTML文本区域字段的,但它将保留换行符。它将删除所有标签。
但是,如果电子邮件是HTML格式的,那么您不想删除所有标记。在这种情况下,您可能希望使用一些允许您需要的标记的东西,但会去掉不允许的标记。为此,请使用wp_kses()
.
使用wp_kses()
要清理HTML电子邮件内容,请将内容和包含允许标记的数组传递给函数:
$allowed_tags = array(
\'p\' => array(
\'id\' => array(),
\'class\' => array(),
),
\'a\' => array(
\'href\' => array(),
\'title\' => array()
),
\'br\' => array(),
\'em\' => array(),
\'strong\' => array(),
);
$sanitized_content = wp_kses( $post->post_content, $allowed_tags );
上述方法的一个简化变体是
wp_kses_post()
. 此函数预设了允许的标记,这使得它更容易,因为您不必定义允许的标记和属性。这主要是帖子内容允许的内容。
$sanitized_content = wp_kses_post( $post->post_content );
如果它是常规的帖子内容,那么它可能已经经历了这个过程。如果是自定义帖子类型,则视情况而定。
那么你应该用哪一个呢?正如我在开头提到的,这取决于内容和使用方式。如果是纯文本,请使用一些可以去除所有标记的内容。如果是HTML,请使用wp_kses()
或变体。
请参阅中有关消毒的相关信息the WP Codex.