HTML and CSS Reference
In-Depth Information
/**
* Determines the controller name using the first element of the URI array
*
* @param $uri_array array The broken up URI
* @return string The controller classname
*/
function get_controller_classname( &$uri_array )
{
$controller = array_shift($uri_array);
return ucfirst($controller);
}
/**
* Removes unwanted double slashes (except in the protocol)
*
* @param $dirty_path string The path to check for unwanted slashes
* @return string The cleaned path
*/
function remove_unwanted_slashes( $dirty_path )
{
return preg_replace('~(?<!:)//~', '/', $dirty_path);
}
Using
preg_replace()
, this function checks for any occurrences of a double slash (
//
) that isn't preceded by a
colon (
:
) and replaces them with a single slash (
/
).
Because regular expressions can be a little hairy to look at
1
, let's break this one down bit by bit:
•
~
—The opening delimiter; this simply tells the function that a regex pattern is beginning
•
(?<!:)
—What's called a “negative lookbehind,” which has three main components:
Enclosing parentheses—Define the lookbehind
•
•
?<!
—The actual lookbehind, which literally tells the regex, “look at the character right
before the one being matched”
•
:
—The expression or character that we
don't
want to match; in this case, it's the colon
preceding the two slashes, which indicates that it's the protocol and should not be replaced
•
//
—The characters to look for; in this case, the double slashes
~
—The closing delimiter; this tells the function that the regex pattern is ending
Continuing with the previous URI example, the double-slash problem is solved by running the combined URI
parts through
remove_unwanted_slashes()
:
•
$services_uri = remove_unwanted_slashes($site_uri . $services_link);
This stores a proper URI in
$services_uri
:
1
RegExiscomplexenoughtobeworthyofitsownbook,whichhasconvenientlybeencompiledonlineat
Search WWH ::
Custom Search