使用空合并运算符回显转义输出

Using null coalescing operator to echo an escaped output

是否可以像这样在一个表达式中使用空合并运算符 AND echo:

echo htmlspecialchars($_POST['email']) ?? '';

作为

的缩写形式
if (isset($_POST['email'])) {
  echo htmlspechars($_POST['email']);
}

有什么想法吗?

当未定义参数时,空合并运算符不会发出 E_NOTICE

所以你可以$email = htmlspecialchars($_POST['email'] ?? '');

请注意,空合并运算符应用于 变量 ($_POST['email']) 并且 not 应用于 htmlspecialchars().

如果您想使用条件三元运算符 (?:),那么您应该在操作之前检查变量是否已设置。

if ( isset($_POST['email']) ) {
    $email = htmlspecialchars($_POST['email'] ?: '');
}

请注意,如果变量 已设置 ,则 isset() 将是 TRUE(或者,换句话说,它已被 定义 并且值不同于 NULL).