出于某种原因,span仍在php if语句中显示

出于某种原因,span仍在php if语句中显示,php,html,forms,validation,if-statement,Php,Html,Forms,Validation,If Statement,对于我正在处理的表单的一个字段,我有两个if语句。一个是检查字段(电子邮件)是否为空,另一个是检查键入的电子邮件格式是否正确。如果语句为false,则应显示带有span标记的错误消息。但是,即使语句为true,代码中仍会显示span标记 这是代码 <?php if( empty($data['email']) ): ?> <span class="error_list"><?php echo $error[5]; ?></span> &l

对于我正在处理的表单的一个字段,我有两个if语句。一个是检查字段(电子邮件)是否为空,另一个是检查键入的电子邮件格式是否正确。如果语句为false,则应显示带有span标记的错误消息。但是,即使语句为true,代码中仍会显示span标记

这是代码


<?php if( empty($data['email']) ): ?>
    <span class="error_list"><?php echo $error[5]; ?></span>
<?php endif; ?>
<?php if( !preg_match( '/^[0-9a-zA-Z_.\/?-]+@([0-9a-zA-Z-]+\.)+[0-9a-zA-Z-]+$/', $data['email']) ): ?>
    <span class="error_list"><?php echo $error[6]; ?></span>
<?php endif; ?>
我也在分享这些图片来解释到底发生了什么。 有两种情况需要解释,但问题是相同的

第一例

我故意将电子邮件地址的格式弄错了(它缺少“@”并给出$error[6]),但是,正如您在图1中看到的,在带有$error[6]的跨距上方还显示了一行跨距标记

image1

图像2

我想是这条线的

<span class="error_list"><?php echo $error[5]; ?></span>


span标记中是空的,所以我知道它没有给出$error[5],应该在字段中没有键入任何内容时将其输出。在这里,我不明白当输入字段被填充时,span标记行是如何仍然存在的。span标记不应该因为这一部分而以html格式显示,对吗

<?php if( empty($data['email']) ): ?>

第二种情况

第二种情况与我上面解释的相反。这一次,我将字段留空以给出$error[5]。布局应该是这样的,但其他跨度标记也在那里

图像3

图像4


这篇文章结束得太久了,我知道情况解释得很糟糕,但任何帮助都将不胜感激。提前非常感谢。

您应该仔细检查一下您的情况。可以使用var_dump()验证每个条件的值。其中一个可能返回true。您的代码到底有什么问题?对于什么输入值,您会得到意外的结果?结果是什么?“一个span标记仍在显示”哪个span标记正在显示?另外,请向我们展示您的HTML表单。@Nick请查看我提供的代码。@kmoser谢谢您的评论。请看一下我提供的代码。
if( !empty($_POST) ) {
    foreach( $_POST as $key => $value ) {
        $clean[$key] = htmlspecialchars( $value, ENT_QUOTES);
    } 
}

<span class="error_list"><?php echo $error[5]; ?></span>

<?php if( empty($data['email']) ): ?>