Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.3

Search User Guide

# Класс URI

Класс URI предоставляет функции, которые помогают вам получать информацию из строк URI. Если вы используете URI-роутинг, вы можете также получить информацию о переписанных сегментах.

Примечание: Этот класс автоматически инициализируется системой, поэтому нет смысла делать это вручную.

## $this->uri->segment(n)

Позволяет вам получить указанный сегмент. Где n это номер сегмента, который вы хотите получить. Сегменты пронумерованы слева направо. Например, если ваш полный URL выглядит так:

`http://example.com/index.php/news/local/metro/crime_is_up`

Соответствие между номерами сегментов и их содержимым будет следующее:

1. news
2. local
3. metro
4. crime_is_up

По умолчанию функция возвращает FALSE, если сегмент не существует. Есть второй опциональный параметр, который позволяет вам устанавливать значение по умолчанию в случае отсутствия сегмента. Например, эта инструкция указывает функции на то, что нужно вернуть ноль в случае неудачи:

`$product_id = $this->uri->segment(3, 0);`

Это помогает избегать написания кода вроде этого:

`if ($this->uri->segment(3) === FALSE)
{
$product_id = 0;
}
else
{
$product_id = $this->uri->segment(3);
}
`

## $this->uri->rsegment(n)

Эта функция идентична предыдущей, за исключением того, что она позволяет вам получить конкретный сегмент из вашего переписанного URI, если вы используете URI-роутинг.

## $this->uri->slash_segment(n)

Эта функция полностью идентична $this->uri->segment(), за исключением того, что она добавляет ведущий и (или) завершающий слеши, в зависимости от указанного во втором парамере. Если параметр не используется, будет добавлен завершающий слеш. Пример:

`$this->uri->slash_segment(3);
$this->uri->slash_segment(3, 'leading');
$this->uri->slash_segment(3, 'both');`

Возвращает:

1. segment/
2. /segment
3. /segment/

## $this->uri->slash_rsegment(n)

Эта функция идентична предыдущей, за исключением того, чтоы она позволяет добавлять слеши в переписанные сегменты вашего URI, в случае, если вы используете URI-роутинг.

## $this->uri->uri_to_assoc(n)

Эта функция позволяет вам преобразовать сегменты URI в ассоциативный массив пар ключ/значение. Рассмотрим этот URI:

`index.php/user/search/name/joe/location/UK/gender/male`

Используя эту функцию вы можете преобразовать URI в ассоциативный массив в соответствии с этим прототипом:

`[array]
(
'name' => 'joe'
'location' => 'UK'
'gender' => 'male'
)`

Первый параметр функции позволяет вам установить смещение. По умолчанию оно установлено в `3`, так как ваш URI обычно содержит имя контроллера и его функции в первом и втором сегментах. Пример:

`$array = $this->uri->uri_to_assoc(3);
echo $array['name'];`

Второй параметр позволяет вам устанавливать ключи по умолчанию, поэтому массив, возвращаемый функцией, всегда будет содержать ожидаемые индексы, даже если они отсутствуют в URI. Пример:

`$default = array('name', 'gender', 'location', 'type', 'sort');
$array = $this->uri->uri_to_assoc(3, $default);`

Если URI не содержит значения по умолчанию, индекс массива будет установлен с указанным именем и значением FALSE.

Наконец, если соответствующее значение не найдено для заданного ключа (если нечетный номер сегментов URI) значение будет установлено в FALSE.

## $this->uri->ruri_to_assoc(n)

Эта функция идентична предыдущей, за исключением того, что она создает ассоциативный массив, используя переписанный URI, если вы используете URI-роутинг.

## $this->uri->assoc_to_uri()

Принимает ассоциативный массив на вход и генерирует из него строку URI. Ключи массива будут включены в строку. Пример:

`$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');
$str = $this->uri->assoc_to_uri($array);
// Сделает: product/shoes/size/large/color/red`

## $this->uri->uri_string()

Возвращает строку с полным URI. Например, если это ваш полный URL:

`http://example.com/index.php/news/local/345`

Тогда функция вернет:

`/news/local/345`

## $this->uri->ruri_string()

Эта функция идентична предыдущей, за исключением того, что она возвращает переписанную строку URI, в случае если вы используете URI-роутинг.

## $this->uri->total_segments()

Вернет количество сегментов.

## $this->uri->total_rsegments()

Эта функция идентична предыдущей, за исключением того, что она возвращает общее количество сегментов вашего переписанного URI в случае, если вы используете URI-роутинг.

## $this->uri->segment_array()

Возвращает массив, содержащий сегменты URI. Например:

`$segs = $this->uri->segment_array();
foreach ($segs as $segment)
{
echo $segment;
echo '<br />';
}`

## $this->uri->rsegment_array()

Эта функция идентична функции выше, за исключенеим того, что она возвращает массив сегментов переписанного URI, если вы используете URI-роутинг.

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter