<!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 : URI Class</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" src="../nav/user_guide_menu.js"></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='ExpressionEngine Dev Team' />
<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.6.0</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="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.</p>


<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.</p>



<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.</p>


<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.</p>



<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.</p>



<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>