Есть ли способ получить существующие подкаталоги и файлы из URL? - PullRequest
0 голосов
/ 08 марта 2020

Представьте, что у вас есть ваш файл с URL http://my.page/folder_1/file_1.php

Я хочу знать, есть ли какое-нибудь программное обеспечение / команда / скрипт для получения подпапок / файлов с указанным URL-адресом.

Например:

Входной аргумент: http://my.page/folder_1/

Выход:

http://my.page/folder_1/file_1.php [file]
http://my.page/folder_1/folder_1a  [dir]

Я даже не знаю, возможно ли это, но надеюсь, что это be

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

Вы можете использовать функцию scandir () , которая используется для возврата массива файлов и каталогов указанного каталога. Функция scandir () выводит список файлов и каталогов, которые присутствуют в указанном пути.

Синтаксис:

scandir(directory, sorting_order, context);

Пример:

// specifying directory 
$mydir = '/folder_1'; 

//scanning files in a given diretory in ascending order 
$myfiles = scandir($mydir); 

//displaying the files in the directory 
print_r($myfiles); 

Вывод:

 Array
(
[0] => terms.php
[1] => index.php 
[2] => contact.php
[3] => aboutus.php
[4] => ..
[5] => .
)

Чтение PHP | Подробности функции scandir () здесь: https://www.geeksforgeeks.org/php-scandir-function/

0 голосов
/ 08 марта 2020

Xiaofeng имеет право, возможность извлекать каталоги файлов зависит от реализации сервера. Часто на профессиональных веб-сайтах этот каталог отключен. Тем не менее, вы все равно можете дать ему go. Веб-сервер ответит 404, если список каталогов не включен / не поддерживается.

Тем не менее, я украл немного кода из здесь

curl -silent $1 | grep href=\" | grep "http://" | grep -o "http:\/\/[^\"]*"

По сути, код ищет тег href со ссылкой http: // и затем извлекает URL (grep -o возвращает только соответствующую часть строки). Поскольку мы используем синтаксический анализ строк для извлечения URL-адресов из HTML источника, мы не можем назвать этот код общим - должен использоваться правильный синтаксический анализатор HTML, если вы хотите более надежный код.

Осталось заменить $ 1 на выражение, которое берет URL-адрес и удаляет имя файла. Вот код для этого:

DIR=${URL%/*}/

Приведенный выше код удалит самый короткий соответствующий шаблон в конце URL, который начинается с '/'. Например:

URL="http://my.page/folder_1/file_1.php"
DIR=${URL%/*}/
echo $DIR  # outputs http://my.page/folder_1/

Собрав все воедино, вы можете получить такой скрипт:

URL="$1"
DIR="${URL%/*}/"
curl -silent "$DIR" | grep href=\" | grep "http://" | grep -o "http:\/\/[^\"]*"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...