为什么在 HTML 属性中使用 PHP 块时会出现这样的问题?

Why is there such a problem when using PHP block inside of HTML attribute?

提问人:Yaro-Maro 提问时间:7/6/2021 最后编辑:Yaro-Maro 更新时间:7/7/2021 访问量:98

问:

我要问这个问题很简单。

在下面的示例中,() {} 括号按预期工作,并在我的编辑器 (atom) 中适当着色:

<p> "<?php if(){} ?>" </p>

在下面的例子中,在我的编辑器(atom)中,() {} 括号没有按照它们的颜色着色:

<p name= "<?php if(){} ?>" ></p>

在下面的代码中,() {} 的颜色不合适,但函数有效(true 和 false):

<p name=" <?php if (TRUE) { echo "it is ok" } else { echo "it is not ok" } ?> "></p>

所以一切都很好,对吧?这只是语法突出显示问题,对吧?错! 如果我输入这个......

<?php if (FALSE) { ?> <input value=" <?php echo "it is ok"; } ?> ">

...如果为 FALSE,则浏览器输出“>输入字段所在的位置。 (如果为 TRUE,则它显示您期望的内容,即值为“it is ok”的输入字段。

  • 为什么呢?有两个不同的 php 块。
  • 这只是属性内部的问题。不在 HTML 中的其他引号中。
  • 如何解决这个问题?

非常感谢您的帮助!

PHP 字符串 语法 属性 引号

评论

4赞 u_mulder 7/6/2021
当然会打印出来,因为它在你的 .">if (FALSE)
0赞 Barmar 7/6/2021
正如@u_mulder所说,您没有正确嵌套 PHP 和 HTML。
0赞 Yaro-Maro 7/7/2021
嘿,伙计们,谢谢你的评论。但这没有多大意义(至少在PHP在其他情况下的行为方式。我绝对知道我可以在 php 块内打开 if 函数,然后使用 php 块在另一个地方关闭它。这是php部分: if (FALSE) { echo “it is ok”;(结果=没问题)这是html部分:<input value=“”>因此,即使它是假的,从逻辑上讲,它不应该激活if语句,而我只剩下上面的html部分。这是没有意义的。有意见吗?@Barmar

答:

1赞 BRABO 7/6/2021 #1

你的最后一句话是

  <?php if (FALSE):?>
     <input value="it is ok">
  <?php endif;?>

内嵌

 <?php if (FALSE):?><input value="it is ok"><?php endif;?>

评论

0赞 Yaro-Maro 7/7/2021
嘿,谢谢伙计。我确实找到了这种写法,并且可以在这种情况下使用它。我只是想抓住基本面。在上面的示例中,if 语句不应激活,因此您会得到 <input value=“”>。所以我不明白为什么是“剩下的>。我知道一个事实,你可以将PHP函数拆分到许多块中。为什么人们将我标记为 -2“没有用或没有研究的问题”是没有道理的,当我尽了最大努力研究我的问题并将其消化到最基本的情况下。那么,我们该如何在这里提出问题呢?
0赞 Yaro-Maro 7/7/2021 #2

无论如何,我找到了。对我来说有意义的最好的方法是:

<?php if (FALSE): ?> <input value="<?php echo $validId; ?>"> <?php endif; ?>

或者,换句话说

<?php if (FALSE){ ?> <input value="<?php echo $validId; ?>"> <?php } ?>

我可以呼应整个事情,但我只想呼应价值。如果你把右括号放在HTML引号外面,那么你就可以了。

对我来说,为什么人们会把它记下来,当我研究得如此之好,并如此清楚地呈现它时,这是没有道理的。这通常在大多数情况下有效,但在 HTML 属性引号中,php 的行为格外奇怪。这是我迄今为止的发现。

0赞 Barmar 7/7/2021 #3

<?php if (FALSE) { ?> <input value=" <?php echo "it is ok"; } ?> ">

最后不在体内。所以它是无条件打印的。因此,当条件失败时(因为它必须如此),您不会打印开头,但您仍然打印 ,这是不匹配的,并产生无效的 HTML。">ifFALSE<input">

评论

0赞 Yaro-Maro 7/9/2021
嘿,谢谢伙计!实际上,我今天刚刚意识到这一点。哈哈有一个尤里卡时刻。非常感谢您的简单解释。