Well, I just got here, so I figured I'd contribute something. I've posted this elsewhere, so you will find it in other places, but I figure this is as good as any place to re-post it. Also, I've added lots of extra comments so people will understand what's going on.

// OK, now I'm going to make them constants so that I can use them in my nifty// function which can be placed in any script and not be stuck within the // environment config script if you don't want it there.

define('SELF', $self);define('IURI', $iuri);

// Ok, now here's my workhorse function, just feed it the number for the segment// that you want and it will output it's value.

function seg($n){ // off by one fix $n = $n - 1; // this way we can count from 1 instead of 0

// get our uri $ruri = $_SERVER['REQUEST_URI'];

// explode our install uri into an array $iuri = explode('/', IURI);

// now lets do some filtering, we'll be using preg_replace so that we will // only using the first occurance of any terms that may appear in our SELF // or IURI $ruri = preg_replace('/'.SELF.'/', '', $ruri, 1);

// now we are going to take our $iuri array and filter out the individual // components foreach($iuri as $k => $v) { // you will note that I don't use the key, because I don't really care // what the key ($k) is, it's not relevant to the stripping process, and only // helps with the iteration of the array values ($v)

$ruri = preg_replace('/'.$v.'/', '', $ruri, 1); }

// now to create our segment array // this line is read in reverse, first we explode the array with explode() // then we get rid of any empty values with array_filter() // and finally we reset the array index with array_merge() by merging // our new array with an empty array. $seg = array_merge(array(), array_filter(explode('/', $ruri)));

// if the segment starts with a ? then it's a $_GET value and not an uri // value, so we don't want to parse it. $value = $seg[$n] if( $value[0] == "?") return FALSE; // [0] will grab the first character of // the variable

// ok, now that we've determined everything is kosher, and that our value // not only exists, but is a valid value, let's filter it, and return it. $value = htmlspecialchars($seg[$n], ENT_QUOTES);

return $value;}

simple, right?

OK, now if you are using Apache, here's a simple method to remove the index.php from your URI. I've got it so that it will either use mod_rewrite, or if mod_rewrite is unavailable, it'll use a dirtier method using the 404 redirect. Just put it into a file at the root of your sites install path, and save it as .htaccess. ( This is for Apache, other server software may not be capable of this, or may require a different method. In fact, if they are capable, they will most certainly require a different method )