<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>

<title>CodeIgniter User Guide</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript">
window.onload = function() {
	myHeight = new fx.Height('nav', {duration: 400});
	myHeight.hide();
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='Rick Ellis' />
<meta name='description' content='CodeIgniter User Guide' />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle.jpg" width="153" height="44" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>CodeIgniter User Guide Version 1.5.3</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://www.codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
URI Class
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="www.codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">


<h1>URI Class</h1>

<p>The URI Class provides functions that help you retrieve information from your URI strings. If you use URI routing, you can
also retrieve information about the re-routed segments.</p>

<p class="important"><strong>Note:</strong> This class is initialized automatically by the system so there is no need to do it manually.</p>

<h2>$this->uri->segment(<var>n</var>)</h2>

<p>Permits you to retrieve a specific segment. Where <var>n</var> is the segment number you wish to retrieve.
Segments are numbered from left to right. For example, if your full URL is this:</p>

<code>http://www.your-site.com/index.php/news/local/metro/crime_is_up</code>

<p>The segment numbers would be this:</p>

<ol>
<li>news</li>
<li>local</li>
<li>metro</li>
<li>crime_is_up</li>
</ol>

<p>By default the function returns FALSE (boolean) if the segment does not exist. There is an optional second parameter that
permits you to set your own default value if the segment is missing.
For example, this would tell the function to return the number zero in the event of failure:</p>

<code>$product_id = $this->uri->segment(3, 0);</code>

<p>It helps avoid having to write code like this:</p>

<code>if ($this->uri->segment(3) === FALSE)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;$product_id = 0;<br />
}<br />
else<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;$product_id = $this->uri->segment(3);<br />
}<br />
</code>

<h2>$this->uri->rsegment(<var>n</var>)</h2>

<p>This function is identical to the previous one, except that it lets you retrieve a specific segment from your
re-routed URI in the event you are using CodeIgniter's <a href="../general/routing.html">URI Routing</a> feature.


<h2>$this->uri->slash_segment(<var>n</var>)</h2>

<p>This function is almost identical to <dfn>$this->uri->segment()</dfn>, except it adds a trailing and/or leading slash based on the second
parameter.  If the parameter is not used, a trailing slash added.  Examples:</p>

<code>$this->uri->slash_segment(<var>3</var>);<br />
$this->uri->slash_segment(<var>3</var>, 'leading');<br />
$this->uri->slash_segment(<var>3</var>, 'both');</code>

<p>Returns:</p>

<ol>
<li>segment/</li>
<li>/segment</li>
<li>/segment/</li>
</ol>


<h2>$this->uri->slash_rsegment(<var>n</var>)</h2>

<p>This function is identical to the previous one, except that it lets you add slashes a specific segment from your
re-routed URI in the event you are using CodeIgniter's <a href="../general/routing.html">URI Routing</a> feature.



<h2>$this->uri->uri_to_assoc(<var>n</var>)</h2>

<p>This function lets you turn URI segments into and associative array of key/value pairs.  Consider this URI:</p>

<code>index.php/user/search/name/joe/location/UK/gender/male</code>

<p>Using this function you can turn the URI into an associative array with this prototype:</p>

<code>[array]<br />
(<br />
&nbsp;&nbsp;&nbsp;&nbsp;'name' => 'joe'<br />
&nbsp;&nbsp;&nbsp;&nbsp;'location'	=> 'UK'<br />
&nbsp;&nbsp;&nbsp;&nbsp;'gender'	=> 'male'<br />
)</code>

<p>The first parameter of the function lets you set an offset.  By default it is set to <kbd>3</kbd> since your
URI will normally contain a controller/function in the first and second segments. Example:</p>

<code>
$array = $this->uri->uri_to_assoc(3);<br />
<br />
echo $array['name'];
</code>


<p>The second parameter lets you set default key names, so that the array returned by the function will always contain expected indexes, even if missing from the URI. Example:</p>

<code>
$default = array('name', 'gender', 'location', 'type', 'sort');<br />
<br />
$array = $this->uri->uri_to_assoc(3, $default);</code>

<p>If the URI does not contain a value in your default, an array index will be set to that name, with a value of FALSE.</p>

<p>Lastly, if a corresponding value is not found for a given key (if there is an odd number of URI segments) the value will be set to FALSE (boolean).</p>


<h2>$this->uri->ruri_to_assoc(<var>n</var>)</h2>

<p>This function is identical to the previous one, except that it creates an associative array using the
re-routed URI in the event you are using CodeIgniter's <a href="../general/routing.html">URI Routing</a> feature.



<h2>$this->uri->assoc_to_uri()</h2>

<p>Takes an associative array as input and generates a URI string from it.  The array keys will be included in the string.  Example:</p>

<code>$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');<br />
<br />
$str = $this->uri->assoc_to_uri($array);<br />
<br />
// Produces:  product/shoes/size/large/color/red
</code>


<h2>$this->uri->uri_string()</h2>

<p>Returns a string with the complete URI.  For example, if this is your full URL:</p>

<code>http://www.your-site.com/index.php/news/local/345</code>

<p>The function would return this:</p>

<code>news/local/345</code>


<h2>$this->uri->ruri_string(<var>n</var>)</h2>

<p>This function is identical to the previous one, except that it returns the
re-routed URI in the event you are using CodeIgniter's <a href="../general/routing.html">URI Routing</a> feature.



<h2>$this->uri->total_segments()</h2>

<p>Returns the total number of segments.</p>


<h2>$this->uri->total_rsegments(<var>n</var>)</h2>

<p>This function is identical to the previous one, except that it returns the total number of segments in your
re-routed URI in the event you are using CodeIgniter's <a href="../general/routing.html">URI Routing</a> feature.



<h2>$this->uri->segment_array()</h2>

<p>Returns an array containing the URI segments.  For example:</p>

<code>
$segs = $this->uri->segment_array();<br />
<br />
foreach ($segs as $segment)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo $segment;<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo '&lt;br />';<br />
}</code>

<h2>$this->uri->rsegment_array(<var>n</var>)</h2>

<p>This function is identical to the previous one, except that it returns the array of segments in your
re-routed URI in the event you are using CodeIgniter's <a href="../general/routing.html">URI Routing</a> feature.



</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="unit_testing.html">Unit Testing Class</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Next Topic:&nbsp;&nbsp;<a href="user_agent.html">User Agent Class</a>
<p>
<p><a href="http://www.codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2007 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
</div>

</body>
</html>