tags:

views:

59

answers:

1

How do I create an if statement saying something like this? Basically, how do you use the URI class to determine if there is a value in any segment?

$segment = value_of_any_segment;
if($segment == 1{
    do stuff
}

I know this is pretty elementary, but I don't totally understand the URI class...

+4  A: 

Your question is a little unclear to me, but I'll try to help. Are you wondering how to determine if a particular segment exists or if it contains a specific value?

As you are probably aware, you can use the URI class to access the specific URI segments. Using yoursite.com/blog/article/123 as an example, blog is the 1st segment, article is the 2nd segment, and 123 is the 3rd segment. You access each using $this->uri->segment(n)

You then can construct if statements like this:

// if segment 2 exists ("articles" in the above example), do stuff
if ($this->uri->segment(2)) {
    // do stuff
}

// if segment 3 ("123" in the above example) is equal to some value, do stuff
if ($this->uri->segment(3) == $myValue) {
    // do stuff
}

Hope that helps! Let me know if not and I can elaborate or provide additional information.

Edit:

If you need to determine if a particular string appears in any segment of the URI, you can do something like this:

// get the entire URI (using our example above, this is "/blog/article/123")
$myURI = $this->uri->uri_string()

// the string we want to check the URI for
$myString = "article";    

// use strpos() to search the entire URI for $myString
// also, notice we're using the "!==" operator here; see note below
if (strpos($myURI, $myString) !== FALSE) {
    // "article" exists in the URI
} else {
    // "article" does not exist in the URI
}

A note regarding strpos() (from the PHP documentation):

This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.

I hope my edit helps. Let me know if I can elaborate.

Colin
great answer!!!
sea_1987
Thanks, Colin! You're on the right track! Your answer solves my problem, but I'm wondering if it's possible to use uri_to_assoc(n)?
Kevin Brown
@Kevin: Can you elaborate? Are you trying to determine if a particular string exists in *any segment* of the URL?
Colin
You're exactly right, Colin!
Kevin Brown
@Kevin: I updated my answer to address that. Let me know if it isn't clear.
Colin
You've been most helpful! Thanks!
Kevin Brown
@Kevin: Glad I could help!
Colin