У меня есть код последующих, которые получают $_GET
и сделать деление на контроллер, действие и PARAMSДружественные URL с ":"
http://localhost/controller/action/param1/param2
$url = explode('/', $_GET['url']);
$urlSize = count($url);
$filter = $this->factory('Core\Security\Filter');
if($urlSize >= 1) {
$controller = $filter->replace($url[0], 'friendly-url');
if($urlSize >= 2) {
$action = $filter->replace($url[1], 'friendly-url');
if($urlSize >= 3) {
unset($url[0], $url[1]);
foreach($url as $index => $param) {
$params[] = $filter->replace($param, 'friendly-url');
}
}
}
}
Core\Security\Filter->replace()
, которые я разрабатываю сейчас:
public function replace($data = null, $type = 'alphanumeric') {
/*
@TODO, implement regex by type
numeric
$regex = '/^[[:digit:]]$/';
alphanumeric
$regex = '/^[[:alnum:]]$/';
friendly-url
$regex = '/[^a-zA-Z0-9_-]+/';
$replace = '-'
username
$regex = '/^[^a-zA-Z0-9_-.]{3,32}+';
email
$regex = '/^[[a-zA-Z0-9_-.]{1,96}][email protected][a-zA-Z0-9-]{2,64}+(?:\.[a-zA-Z0-9-]+)*$/';
*/
}
Ok , проблема у меня есть: Как получить URL-адреса в этом формате:
http://localhost/controller/action/param1/param2:value2
$ Парам массив:
Array(
[0] => param1
[1] => Array(
[param2] => value2
)
)
РЕШИТЬ С ЭТИМ:
foreach($url as $index => $param) {
if(strstr($param, ':')) {
$subParam = explode(':', $param, 2);
$this->_request['params'][][$subParam[0]] = $filter->replace($subParam[1], 'friendly-url-param');
} else {
$this->_request['params'][] = $filter->replace($param, 'friendly-url-param');
}
}
Довольно пожалуйста с сахаром на вершине использования 'filter_var ($ ул FILTER_VALIDATE_EMAIL) 'вместо регулярного выражения, которое не соответствует целой группе действительных ema il, тема, которая была [включена] (http://stackoverflow.com/questions/201323) [здесь] (http://stackoverflow.com/questions/1903356) [at] (http: // stackoverflow. com/questions/703060) [длина] (http://stackoverflow.com/questions/997078) – DaveRandom
Будьте предупреждены: двоеточия в URI [запрещены в windows apache] (https://issues.apache.org/bugzilla/show_bug .cgi? ID = 41441). В результате лучше избегать двоеточий в URL-адресах в PHP-приложениях. –
Одним из требований не являются серверы Windows;) –