<?php
/*
+------------------------------------------------------------------------------+
| URI Class v. 1.3.2 date 23.03.2006 |
| |
| Класс для работы с $_SERVER["REQUEST_URI"] |
| Когда-то где-то я видел что-то подобное и оно мне понравилось, |
| Но искать было лень, и потому я написал свой класс |
| |
| Made by Alkeeper (c) 2004-2006 [email protected] |
+------------------------------------------------------------------------------+
*/
class URI
{
var $displace = 0;
var $levels = 0;
var $separate = array ();
var $as_string;
/*
+------------------------------------------------------------------------------+
| Конструктор |
+------------------------------------------------------------------------------+
*/
function URI()
{
if ($_SERVER["REQUEST_URI"] != "/")
{
$q = preg_replace("/(\?.+)/","",$_SERVER["REQUEST_URI"]);
$q = trim(str_replace("/"," ",$q));
$this->separate = explode(" ", $q);
$this->as_string = "'".implode("','",$this->separate)."'";
$this->levels = count ($this->separate);
}
}
/*
+------------------------------------------------------------------------------+
| Получение Всего uri, комментарии излишни |
+------------------------------------------------------------------------------+
*/
function getFull()
{
return $_SERVER["REQUEST_URI"];
}
/*
+------------------------------------------------------------------------------+
| Получение заданной части uri |
| |
| Пример: |
| |
| $_SERVER["REQUEST_URI"] = "/path/to/folder/"; |
| $uri = new URI; |
| $a = $uri->get(1); // Возвращает "path" |
| $b = $uri->get(2); // Возвращает "to" |
+------------------------------------------------------------------------------+
*/
function get($ind)
{
$ind = $ind + $this->displace;
if ($ind > $this->levels) return false;
else return $this->separate[$ind-1];
}
/*
+------------------------------------------------------------------------------+
| Комментарий не дописан |
+------------------------------------------------------------------------------+
*/
function getIdByElem ($path)
{
$ind = array_keys($this->separate,$path);
return $ind[0]+1;
}
/*
+------------------------------------------------------------------------------+
| Комментарий не дописан |
+------------------------------------------------------------------------------+
*/
function getAfter($ind)
{
if (is_string($ind)) $ind = $this->getIdByElem($ind);
return array_slice($this->separate,$ind);
}
/*
+------------------------------------------------------------------------------+
| Комментарий не дописан |
+------------------------------------------------------------------------------+
*/
function getBefore($ind)
{
if (is_string($ind)) $ind = $this->getIdByElem($ind);
return array_slice($this->separate,0,$ind);
}
/*
+------------------------------------------------------------------------------+
| Комментарий не дописан |
+------------------------------------------------------------------------------+
*/
function getTill($ind)
{
if (is_string($ind)) $ind = $this->getIdByElem($ind);
return array_slice($this->separate,0,$ind+1);
}
/*
+------------------------------------------------------------------------------+
| Комментарий не дописан |
+------------------------------------------------------------------------------+
*/
function getUriTill($ind)
{
if (is_string($ind)) $ind = $this->getIdByElem($ind);
return "/".implode("/", array_slice($this->separate,0,$ind))."/";
}
/*
+------------------------------------------------------------------------------+
| Получение последней части uri |
| |
| Пример: |
| |
| $_SERVER["REQUEST_URI"] = "/path/to/folder/"; |
| $uri = new URI; |
| $last = $uri->getLast(); // Возвращает "folder" |
+------------------------------------------------------------------------------+
*/
function getLast ()
{
return $this->separate[$this->levels - 1];
}
/*
+------------------------------------------------------------------------------+
| Получение первой части uri |
| |
| Пример: |
| |
| $_SERVER["REQUEST_URI"] = "/path/to/folder/"; |
| $uri = new URI; |
| $last = $uri->getFirst(); // Возвращает "path" |
+------------------------------------------------------------------------------+
*/
function getFirst ()
{
if ($this->separate) return $this->separate[0];
else return false;
}
/*
+------------------------------------------------------------------------------+
| Получение части uri на $stepback уровней выше |
| |
| Пример: |
| |
| $_SERVER["REQUEST_URI"] = "/path/to/folder/subfolder/file/"; |
| $uri = new URI; |
| $goto = $uri->getBack(3); // Возвращает "/path/to/" |
+------------------------------------------------------------------------------+
*/
function getBack ($stepback)
{
$uri = "/";
for ($i = 0; $i < $this->levels - $stepback; $uri .= $this->separate[$i]."/", $i++);
return $uri;
}
}
?>