0
나는 Kohana에서 라우터가 어떻게 작동하는지 이해하려고합니다.라우터 :: 컴파일
나는 ... 메소드 컴파일과에 걸어 어려움에 직면 여기이 줄을 만드는 것
:$expression = preg_replace('#'.Route::REGEX_ESCAPE.'#', '\\\\$0', $uri);
방법 컴파일 :
public static function compile($uri, array $regex = NULL)
{
// The URI should be considered literal except for keys and optional parts
// Escape everything preg_quote would escape except for : () < >
$expression = preg_replace('#'.Route::REGEX_ESCAPE.'#', '\\\\$0', $uri);
if (strpos($expression, '(') !== FALSE)
{
// Make optional parts of the URI non-capturing and optional
$expression = str_replace(array('(', ')'), array('(?:', ')?'), $expression);
}
// Insert default regex for keys
$expression = str_replace(array('<', '>'), array('(?P<', '>'.Route::REGEX_SEGMENT.')'), $expression);
if ($regex)
{
$search = $replace = array();
foreach ($regex as $key => $value)
{
$search[] = "<$key>".Route::REGEX_SEGMENT;
$replace[] = "<$key>$value";
}
// Replace the default regex with the user-specified regex
$expression = str_replace($search, $replace, $expression);
}
return '#^'.$expression.'$#uD';
}
const REGEX_ESCAPE = '[.\\+*?[^\\]${}=!|]';
는 별도의 문서 메시지를 표시 할 수 내가 이해하는 데 도움이 될거야?
매우 고맙습니다 ... reqexp로 실험 해보십시오. –