【问题标题】:Why is there such a problem when using PHP block inside of HTML attribute?为什么在 HTML 属性中使用 PHP 块时会出现这样的问题?
【发布时间】:2021-09-17 05:58:50
【问题描述】:

我将非常简单地问这个问题。

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

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

在下面的示例中,() {} 括号没有着色,在我的编辑器 (atom) 中它们应该着色:

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

在下面的代码中,() {} 的颜色不合适,但函数 WORKS(用于 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,那么它会显示您所期望的,一个值为“它没问题”的输入字段。)

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

非常感谢您的帮助!

【问题讨论】:

  • 当然"&gt; 会被打印出来,因为它在您的if (FALSE) 之外。
  • 正如@u_mulder 所说,您没有正确嵌套 PHP 和 HTML。
  • 大家好,感谢您的评论。但这没有多大意义(至少在 PHP 在其他情况下的行为方面。我绝对知道我可以在 php-blocks 中打开 if 函数,然后使用 php 块在另一个地方关闭它。这就是 php部分: if (FALSE) { echo "it is ok"; } (result = it is ok) 这是 html 部分: 所以即使它是假的,从逻辑上讲它不应该激活 if声明,我只剩下上面的 html 部分。这是没有意义的。任何输入的家伙?@Barmar

标签: php string syntax attributes quotes


【解决方案1】:

你的最后一句话应该是

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

内联

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

【讨论】:

  • 嘿,谢谢伙计。我确实找到了这种写法,并且可以在这种情况下使用它。我只是想抓住基本面。在上面的例子中,if 语句不应该被激活,所以你得到了剩下的 。所以我不明白为什么剩下的是“>”。我知道你可以将 PHP 函数拆分为许多块。为什么人们将我标记为 -2“没有用或研究过的问题”是没有意义的当我尽我最大的努力研究我的问题并将其消化到最基础的时候。那么我们还打算在这里问什么问题呢?
【解决方案2】:

不管怎样,我找到了。对我来说有意义的最佳方法是:

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

或者,换句话说

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

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

当我对它进行了如此深入的研究并如此清晰地呈现它时,为什么人们将它标记下来对我来说没有意义。这通常在大多数情况下都有效,但在 HTML 属性引号内,php 只是表现得更加奇怪。这是我目前的发现。

【讨论】:

    【解决方案3】:

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

    末尾的 "&gt; 不在 if 正文中。所以它是无条件打印的。所以当条件失败时(因为它必须是FALSE),你不会打印开头的&lt;input,但你仍然会打印"&gt;,这是不匹配的,并且会产生无效的HTML。

    【讨论】:

    • 嘿,谢谢伙计!我今天才真正意识到这一点。哈哈有一个尤里卡时刻。非常感谢您的简单解释。
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    相关资源
    最近更新 更多