javascript - 获取 HTML 页面调用的 PHP 文件中 HTML 页面的目录

标签 javascript php directory

我有一个 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/

相关文章:

.net - 如果该文件夹不存在,如何通过创建文件夹将文件从一个目录复制到另一个目录

javascript - Promise 成功后无法在 ember 中设置属性

javascript - Selectfield 监听器在 View 初始化时触发

php - 使用php mysql创建表并检索数据,如何修改html中显示的数据?

php - 使用 php 和 HTML5 表单更新 MySQLi 数据库

PHP/MySQL - 日历/设置约会问题

javascript - 尽管被设置为特定 IP,但 socket.io 引用本地主机

javascript - 尝试 'encapsulate' 可重用的 javascript 代码

java - 文件夹名称中的最后一个字符无法替换

directory - ESXi 服务器中 vmware 的共享文件夹选项