php - 包含文件时传递字符串的最佳方法
问题描述
使用 include() 函数时,我在传递字符串时遇到问题。我有 index.php 作为模板文件并包含任何其他页面。
例如,如果我想去主页,地址是http://somethingsomething.com/index.php?page=home,包含文件是pages/home.php。您可以在下面找到模板系统的工作原理。我想更改您当前所在的页面,但我不知道从页面标题传递该字符串的最佳方式是什么。因此,如果我在目录页面上 - http://somethingsomething.com/index.php?page=catalogue,它将包含文件 pages/catalogue.php 并且我尝试将字符串作为 SESSION 传递,但它没有工作。请你帮助我好吗?
来源网址:http ://somethingsomething.com/index.php?page=catalogue
index.php 文件
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1>Welcome, world!</h1>
<?php
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 'home';
}
if (preg_match('/^[a-z0-9]+$/', $page)) {
$insert = include('pages/' . $page . '.php');
if (!$insert) {
$insert = include('pages/error.php');
}
} else if (empty($page)) {
$insert = include('pages/error.php');
} else {
$insert = include('pages/error.php');
}
?>
</body>
</html>
pages/catalogue.php 文件
<?php
$title = "Catalogue";
?>
解决方案
像这样的东西?
<?php
ob_start();
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 'home';
}
if (preg_match('/^[a-z0-9]+$/', $page)) {
$insert = include('pages/' . $page . '.php');
if (!$insert) {
$insert = include('pages/error.php');
}
} else if (empty($page)) {
$insert = include('pages/error.php');
} else {
$insert = include('pages/error.php');
}
$output = ob_get_clean();
?>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1>Welcome, world!</h1>
<?php
echo $output;
?>
</body>
</html>
推荐阅读
- excel - 从公式运行的宏不会复制/粘贴,但通过 vbe 运行它可以正常工作
- spring-mvc - Kotlin 如何使用 assertj 创建自定义断言
- javascript - 在 basic-ftp 上使用上传,其他可能的用途
- reactjs - React 应用程序中的 TypeScript 而不是 ES6?
- php - 如何从下拉列表中删除重复值
- mongodb - 对 insert_one 使用写关注
- python - 具有匹配标题的两个数据框列之间的相关性
- python - 如何使用 python selenium 选择带有文本的空白窗口元素
- python - 无法打印元组的长度.. 为什么
- bash - 在这段代码中,为什么我们必须在 find ... -exec 之后插入 bash ?; {} 和 ${} 引用有什么区别?