Насколько я знаю, нет волшебной нативной функции 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 выводил его, вам нужно установить HTTP-заголовок Content-Type на application / json: header('Content-Type: application/json');
, а затем просто повторить вывод $.
Надеюсь, это поможет!
(И я понимаю, что это заняло больше усилий, чем просто написание фрагмента кода, но, по крайней мере, вам все равно придется немного подумать, чтобы выполнить его. Удачи!