据我所知,没有一个神奇的原生 PHP 函数可以做到这一点,尽管这并不令人非常惊讶。
由于为您编写脚本不会帮助您学到很多东西,我认为最好指出一些工具来应对这一挑战。
首先,你要找到一个目录下的所有PNG文件;要列出目录中的所有文件(和目录),请使用scandir($directory)。从那里开始,您可以使用 foreach 循环遍历返回的数组,并且只将 PNG 文件粘贴到新数组中。
由于 scandir 的输出无法识别文件和目录,您可能需要在结果上运行 is_dir 以确保您只获取文件。
然后您可以使用pathinfo 检索当前文件的扩展名和基本名称(不带扩展名的文件名,在 pathinfo 的输出中标记为“文件名”)。您将需要扩展来确定文件是否为 PNG(因此要添加到新数组中)。
一旦您遍历了 scandir 数组并创建了一个带有 PNG 文件名的数组,您就可以开始构建您的最终数组了。您将要开始另一个foreach 循环,在该循环中,您将“http://www.domain.example/files/”添加到文件名中,并使用一些魔法将文件名转换为标题。您希望数组的结构如下:
$art = array(
array(
'href' => $full_url,
'title' => $title
),
array(
'href' => $full_url,
'title' => $title
),
// etc
);
要获得标题,我会选择这个看似复杂的单行:
$title = ucwords( // Give words an upper case first letter
str_replace('_', ' ', //replace underscores by spaces
substr($filename, 0, (strlen($filename) - 4) //strip .png extension
)
);
foreach 循环完成后,您将拥有一个完全填充的艺术数组。要将其转换为 JSON,您只需使用 json_encode,如下所示:
$output = json_encode(array('art' => $art));
您提到要将其保存为 json 文件;你确定你不只是想让 PHP 输出 JSON 吗?
无论哪种方式,保存文件都很简单,file_put_contents 将完成这项工作。
如果您只想让 PHP 输出它,您需要将 Content-Type HTTP 标头设置为 application/json:header('Content-Type: application/json');,然后简单地回显 $output。
希望有帮助!
(而且我意识到这比仅仅给你写一段代码需要更多的努力,但至少你仍然需要做一些思考工作来完成它。祝你好运!