LoopRun Barcelona 2020

gopher_parsedir

(PECL net_gopher >= 0.1)

gopher_parsedirПреобразует директорию в формате gopher в ассоциативный массив

Описание

gopher_parsedir ( string $dirent ) : array

gopher_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
)

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top