PHP Manual
Prev |  | Next

# gopher_parsedir

(PECL)

gopher_parsedir -- Translate a gopher formatted directory entry into an associative array.

## Description

array gopher_parsedir ( string dirent )

While gopher returns text/plain documents for actual document requests. A request to a directory (such as /) will return specially encoded series of lines with each line being one directory entry or information line.

## Examples

Example 1. Hypothetical output from 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

In the example above, the root directory at gopher.example.com knows about one DOCUMENT identified by 0 located at gopher://gopher.example.com:70/allabout.txt. It also knows about two other directory (which have their own listing files) at gopher://gopher.exmaple.com:70/stories and at gopher://gopher.ejemplo.co.es:70/. In addition there is a binary file, a link to an HTTP url, and several informative lines.

By passing each line of the directory listing into gopher_parsedir(), an associative array is formed containing a parsed out version of the data.

Example 2. Using gopher_parsedir()
`<?php dl("gopher.so"); $directory = file("gopher://gopher.example.com"); foreach($directory as $dirent) { print_r(gopher_parsedir($dirent)); } /* Expected Output --------------- 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 ) */ ?>`

The values given by type are associated with the following constants.

Table 1. Gopher Constants

Constant | Definition
--- | ---
`GOPHER_DOCUMENT` | Standard text/plain document.
`GOPHER_DIRECTORY` | A resource containing a gopher formatted directory listing.
`GOPHER_BINHEX` | A BinHex encoded binary file.
`GOPHER_DOSBINARY` | A DOS formatted binary archive.
`GOPHER_UUENCODED` | A UUEncoded file.
`GOPHER_BINARY` | A generic binary file.
`GOPHER_INFO` | An Informational entry
`GOPHER_HTTP` | A reference to an HTTP resource.
`GOPHER_UNKNOWN` | An unrecognized entry, the line will be returned in data.

Prev | Home | Next
Net_Gopher | Up | hash Functions