【问题标题】:Ternary Operator makes html closing tags not visible三元运算符使 html 结束标记不可见
【发布时间】:2017-04-13 17:53:48
【问题描述】:

我正在使用三元运算符为空字段创建一个非常基本且简单的验证。

代码:

<?php
    echo "<span class='error'>" . $error = (isset($_POST['naam']) && empty($_POST['naam'])) ? 'Required field' : test_input(isset($_POST['naam'])) . "</span>"
?>

整行

echo "<div class='form-group'><Label for='name'>Voorstelling naam</Label><input type='text' name='naam' value='".$row['naam']."' placeholder='Naam'><span class='error'>" . $error = (isset($_POST['naam']) AND empty($_POST['naam'])) ? 'Dit is een verplicht veld' : test_input(isset($_POST['naam'])) . "</span></div>";

代码运行良好,但 &lt;/span&gt;tag 在浏览器中不起作用/不可见

【问题讨论】:

  • 当您在浏览器中查看查看源代码时,您的输出是什么?
  • 顺便说一句,我建议将整个三元组和赋值用括号括起来,只是为了便于阅读连接的内容、位置和内容。
  • 看起来您正在混合分配和字符串连接。你能把整行代码贴出来吗?
  • 对不起,我的代码确实不完整。我编辑了我的帖子
  • @KevinStich 抱歉,我的代码确实不完整。我编辑了我的帖子

标签: php html ternary-operator


【解决方案1】:

使用您更新的代码,尝试仅删除 $error = 分配部分。您还将isset 返回值传递给test_input,这可能不是您想要的。

由于$error = 赋值中的三元组,"&lt;/span&gt;&lt;/div&gt;" 仅被附加到检查的失败案例中。

echo "<div class='form-group'><Label for='name'>Voorstelling naam</Label><input type='text' name='naam' value='".$row['naam']."' placeholder='Naam'><span class='error'>" . 
    $error = (isset($_POST['naam']) AND empty($_POST['naam'])) ? 
        'Dit is een verplicht veld' : // No added "</span></div>" here, doesn't close!
        test_input(isset($_POST['naam'])) . "</span></div>"
;

【讨论】:

  • 谢谢!我确实只是在检查失败的情况下附加了 span 结束标签;)
【解决方案2】:

你的代码对我来说似乎不完整。

您可以在 HTML 中添加 PHP 代码:

<!-- PHP INSIDE HTML -->
<span class="error"><?php echo (empty($_POST['naam']))? "Required field" : test_input($_POST['naam']); ?></span>

或在 PHP 内部生成 HTML:

<?php
// HTML INSIDE PHP
$html = '<span class="error">'
      . (empty($_POST['naam'])? "Required field" : test_input($_POST['naam']))
      . '</span>';
echo $html;
?>

补充说明:

1 - 我认为你不需要测试 issetempty 因为如果变量不存在 empty 返回 true 我相信如果字段未正确传输,我相信你也想显示错误?

2 - 你不需要在调用test_input() 函数中使用isset(),因为如果你的脚本到达这一步,你已经知道$_POST['naam'] 存在并且不是空的,并且通过这样做,您将使用 isset 的返回值而不是字段的实际值作为参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2012-02-11
    • 2021-10-06
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多