PHP 包含 github 个页面的函数
PHP include function for github pages
我有一个 php 网站,来自 php 我只使用了 include,以便更容易地内联重复元素(页眉/页脚)。我想输出一个静态 html 网站,我可以轻松上传到 github 个页面。
是否难以实施甚至可能实施?
UPD
在单独的评论中移动了答案。
此代码将包含 php 网站的目录中的所有内容(包含文件夹和所有扩展名为 php 的文件除外)复制到另一个任意文件夹。并且所有扩展名为 php 的文件都被转换为 html 格式并且(包含文件夹除外)。
请问这是做什么用的?这很简单。您可以方便地处理所有重复元素(header.php、footer.php 等),只需将它们添加到包含文件夹,并在页面本身中添加 via:
<?php include 'includes/header.php'?>
然后,当一切准备就绪后,使用脚本生成静态 html/css/js 站点并将其上传到 github 页面等。需要注意的是github页面不会开始理解php,这一切只是为了方便开发静态html/css/js网站。
!!!脚本必须位于您想要的同一文件夹中,这样您才能得到静态站点!!!
要运行脚本,在控制台进入脚本所在目录,写入:
php copy.php
<?php
$source_dir = "D:\openserver\domains\source.com";
$destination_dir = "D:\openserver\domains\destination.com";
recursive_files_copy($source_dir, $destination_dir);
function recursive_files_copy($source_dir, $destination_dir)
{
// Open the source folder / directory
$dir = opendir($source_dir);
// Create a destination folder / directory if not exist
@mkdir($destination_dir);
// Loop through the files in source directory
while ($file = readdir($dir))
{
// Skip . and ..
if (($file != '.') && ($file != '..') && ($file != 'includes') && (pathinfo($file, PATHINFO_EXTENSION) != 'php'))
{
// Check if it's folder / directory or file
if (is_dir($source_dir . '/' . $file))
{
// Recursively calling this function for sub directory
recursive_files_copy($source_dir . '/' . $file, $destination_dir . '/' . $file);
}
else
{
// Copying the files
copy($source_dir . '/' . $file, $destination_dir . '/' . $file);
}
}
else if ((!is_dir($source_dir . '/' . $file)) && (pathinfo($file, PATHINFO_EXTENSION) == 'php'))
{
ob_start();
include $source_dir . '/' . $file;
$php_to_html = ob_get_clean();
$fp = fopen($file, "w");
fwrite($fp, $php_to_html);
fclose($fp);
rename(pathinfo($file, PATHINFO_BASENAME) , pathinfo($file, PATHINFO_FILENAME) . '.html');
}
}
closedir($dir);
// convertphp();
}
?>
我有一个 php 网站,来自 php 我只使用了 include,以便更容易地内联重复元素(页眉/页脚)。我想输出一个静态 html 网站,我可以轻松上传到 github 个页面。
是否难以实施甚至可能实施?
UPD 在单独的评论中移动了答案。
此代码将包含 php 网站的目录中的所有内容(包含文件夹和所有扩展名为 php 的文件除外)复制到另一个任意文件夹。并且所有扩展名为 php 的文件都被转换为 html 格式并且(包含文件夹除外)。
请问这是做什么用的?这很简单。您可以方便地处理所有重复元素(header.php、footer.php 等),只需将它们添加到包含文件夹,并在页面本身中添加 via:
<?php include 'includes/header.php'?>
然后,当一切准备就绪后,使用脚本生成静态 html/css/js 站点并将其上传到 github 页面等。需要注意的是github页面不会开始理解php,这一切只是为了方便开发静态html/css/js网站。
!!!脚本必须位于您想要的同一文件夹中,这样您才能得到静态站点!!!
要运行脚本,在控制台进入脚本所在目录,写入:
php copy.php
<?php
$source_dir = "D:\openserver\domains\source.com";
$destination_dir = "D:\openserver\domains\destination.com";
recursive_files_copy($source_dir, $destination_dir);
function recursive_files_copy($source_dir, $destination_dir)
{
// Open the source folder / directory
$dir = opendir($source_dir);
// Create a destination folder / directory if not exist
@mkdir($destination_dir);
// Loop through the files in source directory
while ($file = readdir($dir))
{
// Skip . and ..
if (($file != '.') && ($file != '..') && ($file != 'includes') && (pathinfo($file, PATHINFO_EXTENSION) != 'php'))
{
// Check if it's folder / directory or file
if (is_dir($source_dir . '/' . $file))
{
// Recursively calling this function for sub directory
recursive_files_copy($source_dir . '/' . $file, $destination_dir . '/' . $file);
}
else
{
// Copying the files
copy($source_dir . '/' . $file, $destination_dir . '/' . $file);
}
}
else if ((!is_dir($source_dir . '/' . $file)) && (pathinfo($file, PATHINFO_EXTENSION) == 'php'))
{
ob_start();
include $source_dir . '/' . $file;
$php_to_html = ob_get_clean();
$fp = fopen($file, "w");
fwrite($fp, $php_to_html);
fclose($fp);
rename(pathinfo($file, PATHINFO_BASENAME) , pathinfo($file, PATHINFO_FILENAME) . '.html');
}
}
closedir($dir);
// convertphp();
}
?>