Hi! Could we please enable some services and cookies to improve your experience and our website?

PHPize Online / SQLize Online  /  SQLtest Online

A A A
Login    Share code      Blog   FAQ

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

Copy Format Clear

Stuck with a problem? Got Error? Ask AI support!

Copy Clear
Copy Format Clear
<?php // Пример маршрута $routeData['where'] = [ 'context' => '[a-z]{2}', // Параметр 'context' должен состоять из 2 символов 'alias' => '[a-z]+' // Параметр 'alias' может быть любым словом ]; // Пример URI $uri = '/uk/services'; $pattern = '/{context}/{alias?}'; // Шаг 1: Разбираем паттерн маршрута и извлекаем параметры preg_match_all('#\{([a-zA-Z0-9_]+)\}#', $pattern, $matches); // Шаг 2: Заменяем параметры в паттерне на соответствующие регулярные выражения $regex = preg_replace_callback( '#\{([a-zA-Z0-9_]+)\}#', function ($match) { return '([^/]+)'; // Заменяем параметры на регулярные выражения для захвата значений }, $pattern ); // Добавляем начало и конец регулярного выражения $regex = '#^' . $regex . '$#'; // Шаг 3: Сопоставляем URI с регулярным выражением if (preg_match($regex, $uri, $uriMatches)) { // Шаг 4: Проверяем, что параметр 'context' в URI соответствует регулярному выражению из 'where' if (isset($uriMatches[1])) { // Смотрим на первый параметр (context) $contextValue = $uriMatches[1]; // Значение параметра 'context' // Проверяем, соответствует ли значение 'context' регулярному выражению из where if (isset($routeData['where']['context'])) { $contextConstraint = $routeData['where']['context']; // Регулярка для 'context' if (!preg_match('#^' . $contextConstraint . '$#', $contextValue)) { echo 'NOOOOO'; // Значение 'context' не прошло проверку } else { echo 'context matches'; // Значение 'context' прошло проверку } } } } else { echo 'URI does not match the pattern'; }
Copy Clear