我下面的代码正在尝试更新目录 /c/sl/* 中的一堆聊天服务器。我在那里有两个文件,它们都有一个带有服务器信息的 $_SESSION 变量。现在,我尝试使用模板将其更新到 /c/sl/ 中的所有文件,并且仍然具有服务器信息,因为模板中的信息是空白的。
$directory = "/c/sl/*";
$files = glob($directory);
print_r($files);
foreach ($files as $file) {
$content = file_get_contents($file);
preg_match('/\$_SESSION\["server"\] = "(.*?)";/', $content, $matches_server);
preg_match('/\$_SESSION\["serverName"\] = "(.*?)";/', $content, $matches_serverName);
$template = file_get_contents("template.php");
$template = preg_replace('/\$_SESSION\["server"\] = "(.*?)";/', '$_SESSION["server"] = "' . $matches_server[1] . '";', $template);
$template = preg_replace('/\$_SESSION\["serverName"\] = "(.*?)";/', '$_SESSION["serverName"] = "' . $matches_serverName[1] . '";', $template);
file_put_contents("/c/sl/" . $file . ".php", $template);
echo "Template updated for " . $matches_server[1] . " with " . $matches_serverName[1] . "<br>";
}
echo "Variables updated successfully!";
但是,当我的代码尝试获取文件时,数组显示为空白,没有文件更新。有什么帮助吗?我似乎无法让 glob 函数工作,文件数组总是显示为空白:Array ( )
此外,还会出现“变量已成功更新”。
感谢 Chris Haas,我将 glob 函数编辑为:
glob($directory, GLOB_ERR);
。它出现了这个错误:Warning: foreach() argument must be of type array|object, bool given in /home/runner/Imulat-Beta/cr.php on line 74
这个答案是作为 edit 发布到问题 Updating all files with a template not work (PHP) (fixed) by OP Rosake under CC BY-SA 4.0.