还是应该是“汤姆&;杰瑞?
这并不重要。如果您不知道评论内容来自何处,则更重要的是要考虑。如果要插入用户输入作为注释内容,则应转义。
wp_new_comment()
为您转义并清理评论。它的设计目的是直接从评论表单中获取用户输入,并在将其传递给wp_insert_comment()
.
因此,这包括对HTML实体进行编码(转换&
到&
) 并过滤掉不允许的HTML。它还可以将评论者的IP地址添加到评论中。
所以当使用wp_new_comment()
您不需要进行任何转义,只需输入与用户相同的注释,但有一个重要的例外。
二者都wp_new_comment()
和wp_insert_comment()
预期数据将被斜切。WordPress自动运行addslashes()
关于中的所有内容$_POST
, $_GET
和$_REQUEST
这些函数期望数据被删减,因为它们使用来自这些变量的数据。
因此,如果要插入的注释的任何数据包含引号或斜杠,则需要使用斜杠wp_slash()
插入前:
$args = [
\'comment_post_ID\' => 1,
\'comment_content\' => \'Tom\\\'s a cat\',
\'comment_type\' => \'\',
\'user_id\' => 1,
];
$comment_id = wp_new_comment( wp_slash( $args ) );
请注意,我已经添加了斜杠,
Tom\\\'s
是为了PHP而转义的,仍然需要删减。
愚蠢的是wp_insert_comment()
是它运行wp_unslash()
. 因此,我们添加斜杠只是为了立即删除它们。但为了与$_POST
变量,以便可能是内容一部分的斜杠不会被错误删除。