gpt4 book ai didi

php - 保存一个 .php 文件并保存包含(可能)

转载 作者:行者123 更新时间:2023-12-04 07:00:00 25 4
gpt4 key购买 nike

设置:

我有一个标准的 .php 文件 (index.php),其中包含两个包含,一个用于页眉 (header.php),一个用于页脚 (footer.php)。 index.php 文件如下所示:

索引.php

<?php
include header.php;
?>

<h2>Hello</h2>
<p class="editable">Lorem ipsum dolar doo dah day</p>

<?php
include footer.php;
?>

header.php 像这样:
<html>
<head>
<title>This is my page</title>
</head>
<body>
<h1 class="editable">My Website rocks</h1>

和页脚 .php 像这样:
<p>The end of my page</p>
</body>

我正在编写一个 PHP 脚本,它允许您编辑页面上的任何“.editable”项目。我的问题是这些可编辑区域可能出现在任何包含的文件以及 index.php 的主体中。

我的 php 代码正在使用 file_get_contents(); 抓取 index.php 文件;效果很好。我还可以在 index.php 中编辑和保存任何“.editable”区域。

我的问题:

我一直无法找到一种方法来“查找”包含并解析“.editable”区域的包含和解析。我正在寻找有关如何处理 index.php 中所有包含的建议 - 检查它们是否有可编辑区域。我是否需要使用正则表达式来查找“include *.php”?我什至不确定从哪里开始......

对于那些可能希望看到我的 PHP 代码的人。我正在使用 PHP 类:[link text][1],它允许我编写如下代码:
// load the class and file
$html = new simple_html_dom();
$html->load_file("index.php");

// find the first editable area and change its content to "edited"
$html->find('*[class*=editable]', 0)->innertext = "Edited";

// save the file
$html->save(index.php);

[1]: http://simplehtmldom.sourceforge.net/manual_api.htm简单的 php dom 解析器

更新

我一直在玩正则表达式来尝试匹配包含。我在正则表达式方面很垃圾,但我想我已经接近了。这是我到目前为止所拥有的:
$findinclude = '/(?:include|include_once|require|require_once)\s*(?:[a-z]|"|\(|\)|\'|_|\.|\s|\/)*(?=(?:[^\<\?]|[^\?\>])*\?>)/i';

这匹配得相当好,尽管在使用 preg_match 时它似乎确实返回了奇数 ) 和 '。我试图在正则表达式中添加一些安全性以确保它只在 php 标签之间匹配 - 这部分:(?=(?:[^\<\?]|[^\?>])*\?>) - 但它只返回页面上的第一个包含。有关如何改进此正则表达式的任何提示? (我已经做了大约 6 个小时)

最佳答案

您正在创建什么类型的系统?

如果它要被公众使用,你就会有严重的安全问题。人们可以在提供的内容中包含他们自己的 PHP 代码或 JavaScript。

这根本不是创建动态内容的标准方法。大多数情况下,您希望创建一个模板,然后允许用户将他们的更改保存到数据库中。然后,您将从数据库中将信息填写到模板中以进行显示。

如果您允许它们包含 HTML,请使用类似 html purifier 的内容。要清理它,请使用 PDO 使用准备好的语句将数据插入到您的数据库中。 .我相信这里的人们会很乐意回答您关于使用数据库的任何问题。

关于php - 保存一个 .php 文件并保存包含(可能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2031809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com