2

PHP 并不是我真正选择的语言,据说我记得看到if使用这样的 php:

<?php 
    if (blah) { 
?>
        // loads of html and js that doesn't need to be escaped since we closed
        // the php already with "?>"
<?php
    }
?>

或者类似的东西。我不知道它叫什么,如果没有帮助,谷歌搜索 php。

这种技术叫什么?它的正确语法是什么?

4

12 回答 12

3

它可以像您在问题中发布的那样使用,或者像这样(我更喜欢):

<?php 
    if(blah):
?>
        // loads of html and js that doesn't need to be escaped since we closed
        // the php already with "?>"
<?php
    endif;
?>

这在您不执行任何逻辑的模板上最常见,很简单ifloops例如:

<?php foreach($something as $test): ?>
    <p><?php echo $test; ?></p>
<?php endforeach; ?>
于 2012-04-27T12:22:18.013 回答
1

它们被称为 php 标签。看这里:

http://www.php.net/manual/en/language.basic-syntax.phptags.php

语法与您的示例中使用的相同。有一些变化,但这个更可取。

另一种“技术”称为使用控制结构。看这里:

http://ch.php.net/manual/en/control-structures.if.php

于 2012-04-27T12:22:17.900 回答
1

您可能想检查一下:

可以在 IF 语句中将 HTML 嵌入到 PHP 中吗

PHP 手册

于 2012-04-27T12:23:38.077 回答
1

最干净的方法是这样的

<?php if ($test) : ?>
    <p>Some HTML</p>
<?php endif; ?>
于 2012-04-27T12:23:55.927 回答
1

那个语法是正确的。如果您必须在某些地方混合 PHP 和 HTML,还有一种替代语法可以提高代码的可读性:

<?php if( blah ): ?>
  <!-- my HTML -->
<?php endif; ?>

我不同意那些笼统地声明不混合 php 和 html 的人。我使用模板系统尽可能地将应用程序逻辑与 HTML 分开,但在模板文件中仍然存在需要if语句或for循环的地方。

于 2012-04-27T12:25:47.950 回答
1

正如另一位用户指出的那样,它被称为从 HTML 中转义,它只是回显/打印出 PHP if 语句内的每一行 HTML 的替代方法。

话虽如此,您使用的语法很好:

// Option 1
<?php if ($variable) { ?>
<!-- HTML stuff here -->
<?php } ?>

或者,另一种方式:

// Option 2
<?php
if ($variable) {
    echo '<div>';
    echo '<span>Totally putting HTML here</span>';
    echo '</div>';
}
?>

或者,user1266222 指出的第三种方式:

// Option 3
<?php if ($variable) { include 'path/to/htmlfile/filename.html'; } ?>

这将只包括那里的 HTML 文件。

该方法取决于您想要做什么,所有用例都可行,但对于非常小的 HTML 片段,我会选择选项 2。对于整个 HTML 文件(甚至只是部分),我会选择选项 3 . 如果懒惰并且您有较长的 HTML,则有选项 1。

于 2012-04-27T12:28:10.437 回答
1

在手册页中,它被称为Escaping from HTML
当然,您可以使用任何 PHP 语句,不仅if

正确的语法是您在代码片段中使用的语法:用于?>关闭 PHP 模式并<?php再次打开它,它们之间的文本直接进入浏览器

这种技术的使用必须限于基于 PHP 的模板。然而对于这个目的非常有用

于 2012-04-27T12:29:38.740 回答
0

你的意思是这样的吗?

<?php include("filename.html"); ?>

或者,如果您不在 php 标签内,您可以只编写 html 代码

于 2012-04-27T12:19:51.707 回答
0
<?php
if(blah){
include('htmlfile.html');
}
?>

htmlfile.html

<!-- Your HTML Code -->
于 2012-04-27T12:21:52.570 回答
0

它被称为在 HTML 中嵌入 PHP(反之亦然),有一种替代语法可以使它看起来更好一些:

<?php if (condition) : ?>
HTML HTML HTML
<?php endIf; ?>

不过,使用include(file.html);通常是一种更好的方法。

于 2012-04-27T12:22:44.143 回答
0

这是一个完全有效的语法,虽然看起来不是很漂亮,所以对于包含大量 HTML 的文件,您也可以使用:

<?php if($foo) : ?>
<p>Unescaped html goes here</p>
<?php endif; ?>

http://www.php.net/manual/en/control-structures.alternative-syntax.php

于 2012-04-27T12:23:07.733 回答
-1

你可能会考虑heredoc

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

于 2012-04-27T12:22:53.363 回答