allow for routes that can be processed with php, ex: $route['([^/]+)/([^/]+)(/:any)?'] = 'php:"$1" . "/do" . ucfirst("$2") . "$3"'; 
diff --git a/system/core/Router.php b/system/core/Router.php
index 5bc0530..cb7df53 100644
--- a/system/core/Router.php
+++ b/system/core/Router.php
@@ -86,6 +86,13 @@
 	 * @var string
 	 */
 	public $default_controller;
+	
+	/**
+	 * Prepend used in php processed routes
+	 *
+	 * @var string
+	 */
+	public $route_prepend = 'php:';
 
 	/**
 	 * Constructor
@@ -373,10 +380,16 @@
 			// Does the RegEx match?
 			if (preg_match('#^'.$key.'$#', $uri))
 			{
+				// Are we using php functions to process matches?
+				$modifier = strpos($val, $this->route_prepend) === 0? 'e': '';
+				
+				// If we have the 'e' modifier, remove the prepend from the route value.
+				$val = $modifier === 'e'? substr($val, strlen($this->route_prepend)): $val;
+				
 				// Do we have a back-reference?
 				if (strpos($val, '$') !== FALSE && strpos($key, '(') !== FALSE)
 				{
-					$val = preg_replace('#^'.$key.'$#', $val, $uri);
+					$val = preg_replace('#^'.$key.'$#'.$modifier, $val, $uri);
 				}
 
 				return $this->_set_request(explode('/', $val));