虽然这可能是What’s the difference between esc_html, esc_attr, esc_html_e, and so on? 无论如何,我会继续提供答案,因为正如@cag8f所指出的,这个问题没有一个被接受的答案(但我要补充的是,我认为Tom的答案告诉了你需要知道的东西)。
当输出可能在某处发生更改或可能具有某些“不受信任”的值时,需要转义输出。
在您的示例中(下面重复),
<?php $title = "Contact"; ?>
<h1> <?php echo $title; ?> </h1>
你不需要逃避这个。“Contact”已设置,是一个安全值,不会更改。事实上,正如所写的那样,您在浪费空间(和可读性),它实际上应该是硬HTML。
现在,如果你想$title
, 这改变了一切。在这种情况下,您需要转义输出,因为您不知道值可能是什么。
例如:
<?php $value = get_user_meta( $user_id, \'some_meta\', true ); ?>
<p>My Value: <?php echo esc_html( $value ); ?></p>
这需要转义,因为您实际上不知道值是什么,因此您不知道输出是否安全。这就是它需要逃离的地方。
还必须了解以下内容:
了解哪些转义函数执行哪些任务。使用不适合数据的值可能会导致无法完全转义该值,或以其他方式破坏该值。有escape functions for different data types, 因此,请使用正确的方法知道是否需要转义数据。如果您使用的WP函数已经转义了数据,那么您是在双重转义它,这会导致不良输出。如果不确定,请查找函数并查看源代码