summaryrefslogtreecommitdiffstats
path: root/user_guide_src/source/libraries/uri.rst
diff options
context:
space:
mode:
authorTimothy Warren <tim@timshomepage.net>2011-10-06 03:47:59 +0200
committerTimothy Warren <tim@timshomepage.net>2011-10-06 03:47:59 +0200
commitfb7ff742949e0474dfba30be45be513b3b4f63cc (patch)
tree87b150fd502d0789f9660ca4dc2ace44817813c3 /user_guide_src/source/libraries/uri.rst
parentf7a8d86dbc6805a4e52964bbea76738df75b5f35 (diff)
parentec8abee24f456b09ab9d53e88853fe6bd0f7879a (diff)
Merge branch 'develop' of git://github.com/EllisLab/CodeIgniter into develop
Diffstat (limited to 'user_guide_src/source/libraries/uri.rst')
-rw-r--r--user_guide_src/source/libraries/uri.rst188
1 files changed, 188 insertions, 0 deletions
diff --git a/user_guide_src/source/libraries/uri.rst b/user_guide_src/source/libraries/uri.rst
new file mode 100644
index 000000000..ee60b77d7
--- /dev/null
+++ b/user_guide_src/source/libraries/uri.rst
@@ -0,0 +1,188 @@
+#########
+URI Class
+#########
+
+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.
+
+.. note:: This class is initialized automatically by the system so there
+ is no need to do it manually.
+
+$this->uri->segment(n)
+======================
+
+Permits you to retrieve a specific segment. Where n is the segment
+number you wish to retrieve. Segments are numbered from left to right.
+For example, if your full URL is this::
+
+ http://example.com/index.php/news/local/metro/crime_is_up
+
+The segment numbers would be this:
+
+#. news
+#. local
+#. metro
+#. crime_is_up
+
+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::
+
+ $product_id = $this->uri->segment(3, 0);
+
+It helps avoid having to write code like this::
+
+ if ($this->uri->segment(3) === FALSE)
+ {
+ $product_id = 0;
+ }
+ else
+ {
+ $product_id = $this->uri->segment(3);
+ }
+
+$this->uri->rsegment(n)
+=======================
+
+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 :doc:`URI Routing <../general/routing>` feature.
+
+$this->uri->slash_segment(n)
+=============================
+
+This function is almost identical to $this->uri->segment(), 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::
+
+ $this->uri->slash_segment(3);
+ $this->uri->slash_segment(3, 'leading');
+ $this->uri->slash_segment(3, 'both');
+
+Returns:
+
+#. segment/
+#. /segment
+#. /segment/
+
+$this->uri->slash_rsegment(n)
+==============================
+
+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 :doc:`URI Routing <../general/routing>`
+feature.
+
+$this->uri->uri_to_assoc(n)
+=============================
+
+This function lets you turn URI segments into and associative array of
+key/value pairs. Consider this URI::
+
+ index.php/user/search/name/joe/location/UK/gender/male
+
+Using this function you can turn the URI into an associative array with
+this prototype::
+
+ [array]
+ (
+ 'name' => 'joe'
+ 'location' => 'UK'
+ 'gender' => 'male'
+ )
+
+The first parameter of the function lets you set an offset. By default
+it is set to 3 since your URI will normally contain a
+controller/function in the first and second segments. Example::
+
+ $array = $this->uri->uri_to_assoc(3);
+
+ echo $array['name'];
+
+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::
+
+ $default = array('name', 'gender', 'location', 'type', 'sort');
+
+ $array = $this->uri->uri_to_assoc(3, $default);
+
+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.
+
+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).
+
+$this->uri->ruri_to_assoc(n)
+==============================
+
+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 :doc:`URI Routing <../general/routing>` feature.
+
+$this->uri->assoc_to_uri()
+============================
+
+Takes an associative array as input and generates a URI string from it.
+The array keys will be included in the string. Example::
+
+ $array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');
+
+ $str = $this->uri->assoc_to_uri($array);
+
+ // Produces: product/shoes/size/large/color/red
+
+$this->uri->uri_string()
+=========================
+
+Returns a string with the complete URI. For example, if this is your
+full URL::
+
+ http://example.com/index.php/news/local/345
+
+The function would return this::
+
+ /news/local/345
+
+$this->uri->ruri_string()
+==========================
+
+This function is identical to the previous one, except that it returns
+the re-routed URI in the event you are using CodeIgniter's :doc:`URI
+Routing <../general/routing>` feature.
+
+$this->uri->total_segments()
+=============================
+
+Returns the total number of segments.
+
+$this->uri->total_rsegments()
+==============================
+
+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 :doc:`URI Routing <../general/routing>` feature.
+
+$this->uri->segment_array()
+============================
+
+Returns an array containing the URI segments. For example::
+
+ $segs = $this->uri->segment_array();
+
+ foreach ($segs as $segment)
+ {
+ echo $segment;
+ echo '<br />';
+ }
+
+$this->uri->rsegment_array()
+=============================
+
+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 :doc:`URI Routing <../general/routing>` feature.