gopher_parsedir
(PECL net_gopher >= 0.1)
gopher_parsedir — Преобразует директорию в формате gopher в ассоциативный массив
Описание
$dirent
) : arraygopher_parsedir() разбирает директорию в формате gopher в ассоциативный массив.
В то время как gopher возвращает text/plain документы для обычного запроса. При запросе директории (например /) возвращается специальным образом кодированный набор строк, каждая из которых является является одной записью директории или информационной строкой.
Список параметров
-
dirent
-
Запись директории.
Возвращаемые значения
Возвращает ассоциативный массив со следующими записями:
- type - одна из констант GOPHER_XXX.
- title - имя ресурса.
- path - путь ресурса.
- host - доменное имя хоста, содержащего данный документ (или директорию).
- port - порт, по которому установлено соединение с host.
В случае неудачи, дополнительная запись data в возвращаемом массиве будет содержать разбираемую строку.
Примеры
Пример #1 Гипотетический вывод с gopher://gopher.example.com/
0All about my gopher site. /allabout.txt gopher.example.com 70 9A picture of my cat. /pics/cat.png gopher.example.com 70 1A collection of my writings. /stories gopher.example.com 70 hThe HTTP version of this site. URL:http://www.example.com gopher.example.com 70 1Mirror of this site in Spain. / gopher.ejemplo.co.es 70 iWelcome to my gopher site. error.host 1 iPlease select one of the options above error.host 1 iSend complaints to /dev/null error.host 1 iLong live gopher! error.host 1
В примере выше, корневая директория на gopher.example.com знает об одном DOCUMENT с идентификатором 0, расположенном по адресу gopher://gopher.example.com:70/allabout.txt. Также она она знает о двух других директориях gopher://gopher.exmaple.com:70/stories и gopher://gopher.ejemplo.co.es:70/. В дополнение тут есть бинарный файл, ссылка на HTTP URL и несколько информационных строк.
Передавая каждую строку вывода в функцию gopher_parsedir(), мы получим ассоциативный массив, содержащий разобранные данные.
Пример #2 Пример использования gopher_parsedir()
<?php
$directory = file("gopher://gopher.example.com");
foreach($directory as $dirent) {
print_r(gopher_parsedir($dirent));
}
?>
Результат выполнения данного примера:
Array ( [type] => 0 [title] => All about my gopher site. [path] => /allabout.txt [host] => gopher.example.com [port] => 70 ) Array ( [type] => 9 [title] => A picture of my cat. [path] => /pics/cat.png [host] => gopher.example.com [port] => 70 ) Array ( [type] => 1 [title] => A collection of my writings. [path] => /stories [host] => gopher.example.com [port] => 70 ) Array ( [type] => 254 [title] => The HTTP version of this site. [path] => URL:http://www.example.com [host] => gopher.example.com [port] => 70 ) Array ( [type] => 1 [title] => Mirror of this site in Spain. [path] => / [host] => gopher.ejemplo.co.es [port] => 70 ) Array ( [type] => 255 [title] => Welcome to my gopher site. [path] => [host] => error.host [port] => 1 ) Array ( [type] => 255 [title] => Please select one of the options above. [path] => [host] => error.host [port] => 1 ) Array ( [type] => 255 [title] => Send complaints to /dev/null [path] => [host] => error.host [port] => 1 ) Array ( [type] => 255 [title] => Long live gopher! [path] => [host] => error.host [port] => 1 )