@tosha_lol_daaa

Preg_match_all и данные в $matches?

Пишу систему роутеров, есть такой код (проверка url):
if (preg_match_all(
    '#^'.$uri.'$#', $currentUrl, $matches, PREG_SET_ORDER
 )) {
     $matches['call'] = $v['call'];
     $matches['middleware'] = $v['middleware'];
     echo '<pre>';
     print_r($matches);
}

Если у меня указано больше 1го роутера:
Route::get('/', '\app\controllers\index\MainController@methodName');
Route::get('/url', '\app\controllers\index\MainController@methodName');

, то результат ($matches) будет пустым если будет использован не последний роутер.
То есть, если я использую /url - все корректно работает, если / - в $matches пустота.

Ниже этого условия так же есть print_r($matches)
Если указанно больше 1го роутера, то в условие (if (preg_match...) print_r($matches) - содержит информацию для любого url (если совпадает), а print_r($matches) который уже ниже условия - не содержит информации.

То есть:
Если указанно больше 1го роутера, то $matches содержит информацию в if () , ниже - нету.
Array
(
    [0] => Array
        (
            [0] => url
        )

)
// второй print_r
Array
(
)

Как это решить?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@tosha_lol_daaa Автор вопроса
Не внимательный я:с
Не сделал break;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы