关于如何在PHP中编写HTML代码的不同角度



我们通过<?php ... ?>标签在HTML代码中编写PHP代码。因此,如果您只需退出所需行的PHP,通常在PHP代码中编写HTML代码就没有意义。但是,如果您需要与PHP代码在同一行中的HTML代码怎么办?

我的示例会像这样:

<div>
    <?php ($bool) ? <script>...</script> : <script></script> ?>
</div>

是:

<div>
    <?php if($bool): ?>
        <script>...</script>
    <?php else: ?>
        <script>...</script>
    <?php endif; ?>
</div>

唯一的方法?

注意:代替<script>,您可以拥有<h1><strong><title>或任何其他"单线"。

预先感谢您。

当然,当您已经说过多个HTML时,替代语法将是要走的方法,如您已经说明的...

但是,对于一个衬里,您可以用<?= '...' ?>缩短<?php echo '...' ?>并在单个或双引号中包装HTML,这取决于您是否已经在HTML语法中使用了双引号。如果您愿意,您也可以逃脱它们,但这会凌乱。

<div>
    <?= ($bool) ? "<script>...</script>" : "<script></script>" ?>
</div>

为了将任何字符串从PHP摘要中打印到您的HTML代码中,请使用Echo函数。

http://php.net/manual/en/function.echo.php

,因此您只需要添加echo

<div>
<?php 
    if($bool) {
     echo '<script>...</script>';
    } else {
     echo '<script>...</script>';
    } ?>

偶然发现了这一点,决定回答我自己的问题,只是将其他新手指向正确的方向。

重要注释:如今我正在使用Laravel框架,如果您不知道,您绝对应该知道它(虽然有其他选择(。

,但即使在此之前,我也开始强烈关注MVC架构。因此,甚至在Laravel的刀片模板之前,我的观点看起来都像以下内容。

<html>
<body>
    <?php if ($isUserAuthenticated) : ?>
        <div>
            <span>Welcome <?= $username ?>
        </div>
    <?php else : ?>
        <a href="login">Login</a>
    <?php endif ?>
</body>
</html>

您可以看到,视图中绝对没有数据操纵。

我也尽力不将任何HTML字符串存储到变量中,但有时它的代码较少,所以我做了以下操作。

$alert = match($errorCode) {
  1 => <<<HTML
    <div class="alert alert-danger">Big error</div>
    HTML,
  2 => <<<HTML
    <div class="alert alert-warning">Small error</div>
    HTML,
  default => ""
};

这样,我可以将语法突出显示(在vscode中(。

注意:匹配表达在PHP8中是新的,但是您可以在开关语句之前实现同样的表达。

相关内容

  • 没有找到相关文章

最新更新