我有一个 HTML 页面,它使用 php 文件作为脚本文件,如下所示:
<!doctype html>
<html lang="en">
<head>
...
<script src="../script.js.php"></script>
</head>
...
script.js.php 文件有这样的内容:
<?php
header('Content-type:text/javascript; charset=utf-8');
$someVar = [];
foreach (glob('*.txt') as $filename) {
$someVar[] = $filename;
}
?>
... here starts the javascript code
可以看出,script.js.php 位于 HTML 文件的父文件夹中,因此 PHP glob() 函数看到的是父文件夹,而不是 HTML 页面所在的文件夹,因此它将列出该文件夹内的所有文本文件。
有没有办法修改此代码,以便我可以将 $someVar 与 HTML 文件的文件夹内的文本文件列表一起使用?
谢谢。
编辑:我认为需要澄清。相同的 PHP 文件将被其他一些 HTML 文件使用,不同的 HTML 文件,位于不同的文件夹中,使用相同的 PHP/Javascript 文件。这就是问题所在,PHP 文件理想情况下应该能够知道其“调用者”的目录,即使用它的 HTML 页面。如果我将某个 HTML 文件的解决方案硬编码到 PHP 文件中,那么该 PHP 文件对于其他文件将不再有用。然后,我可以简单地使用每个 HTML 文件的文件夹内的 PHP 文件,但随后我会多次重复相同的文件,这对于维护目的非常不利。
编辑2:我可能找到了解决问题的方法。我的 HTML 文件变成:
...
<script src="script.js.php"></script>
...
script.js.php 变为:
<?php
header('Content-type:text/javascript; charset=utf-8');
$curDir = getcwd();
include('../newfile.js.php');
echo file_get_contents("../rest.of.js.code.js");
?>
newfile.js.php 是:
<?php
$someVar = [];
foreach (glob($curDir . '/*.txt') as $filename) {
$someVar[] = basename($filename);
}
echo "var someVar = " . json_encode($someVar) . ";\r\n";
?>
rest.of.js.code.js 现在将包含 script.js.php 中之前存在的 Javascript 代码。该文件和newfile.js.php留在父目录中; script.js.php 将在任何需要的 HTML 目录中重复存在(并根据需要调整 newfile.js.php 的路径)。
最佳答案
您可以使用dirname :
$parentDir = dirname(dirname(__FILE__));
__FILE__
是对当前 PHP 脚本 (script.js.php
) 的引用。因此,您将获取文件的父目录,然后获取该目录的父目录。
关于javascript - 获取 HTML 页面调用的 PHP 文件中 HTML 页面的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26894554/