如果由于 php 引擎无法解析 html 代码,我们无法在 php 中使用 html 代码,那么为什么我们可以在 php 标签中包含一个开放式(没有关闭 html 标签)的 html 脚本?
我尝试用包含文件的裸内容替换 include 调用,但这会触发意外的文件结束错误(这是有道理的,因为 php 无法解析 html)。
注册.php:
<?php
$page_title = 'Register';
// the following script echoes $page_title as title, links to stylesheet, and opens body
include ('includes/header.html');
Run Code Online (Sandbox Code Playgroud)
头文件.html:
<!DOCTYPE HTML>
<html lang = "en">
<head>
<meta charset="UTF-8">
<title> <?php echo $page_title ; ?> </title>
<link rel = "stylesheet" href="includes/style.css">
</head>
<body>
<header> <h1>Page Header</h1></header>
Run Code Online (Sandbox Code Playgroud)
我期望以下之间的一致性:
a)包含('includes/header.html')
和
b)只需插入 header.html 代码。
来自b) 的错误消息是您在 php 中插入 html 代码时的标准:
解析错误:语法错误,意外的“<”,期望在 C:\Abyss Web Server\htdocs\register.php 中的文件结束第 6 行
include不仅仅是一些愚蠢的预处理器宏。它不会简单地将一个文件的内容粘贴到另一个文件中。它是一种语言结构,它将“移入”另一个文件,将其作为自己的文件进行处理,同时维护父文件的上下文。
当包含文件时,解析在目标文件的开头退出 PHP 模式并进入 HTML 模式,并在结尾处再次恢复。因此,目标文件中应作为 PHP 代码执行的任何代码都必须包含在有效的 PHP 开始和结束标记中。- https://www.php.net/manual/en/function.include.php
这也是一个原因,如果无法正确解析内部文件,您可以在外部文件中捕获解析错误。
另一个重要的细微差别是:
可以在包含的文件中执行 return 语句,以终止该文件中的处理并返回到调用它的脚本。此外,还可以从包含的文件中返回值。您可以像处理普通函数一样获取 include 调用的值。
然而,这不适用于函数定义,无论任何return语句都将被处理。
仅当您想在同一文件中退出 PHP 模式进入 HTML 时才需要关闭 PHP 标记。PHP 会在每个文件的末尾自动退出 PHP 模式,即使是包含的文件。
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |