gopher_parsedir
(PECL net_gopher:0.1-1.0.0)
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.
Parameters
-
dirent
-
The directory entry.
Return Values
Returns an associative array whose components are:
-
type - One of the
GOPHER_XXX constants.
-
title - The name of the resource.
-
path - The path of the resource.
-
host - The domain name of the host that has
this document (or directory).
-
port - The port at which to connect on
host.
Upon failure, the additional data entry of the
returned array will hold the parsed 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
$directory = file("gopher://gopher.example.com");
foreach($directory as $dirent) {
print_r(gopher_parsedir($dirent));
}
?>
The above example will 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
)