Решил сделать красивые ссылки и пришёл к такому варианту. Если запрос соответствует
preg_match, будет получен массив $array[], например:
domain.com - $array[0] = 'home'
domain.com/a - $array[0] = 'a'
domain.com/a/b/c - $array[0] = 'a', $array[1] = 'b', $array[2] = 'c'
Вопроса 2, можно ли написать код более проще, лучше и моё регулярное выражения: оно работает, но я видел немного другие способы, например с использованием \\1 для поиска повторений
# до знака вопроса ?
$url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
# / не должен повторяться подряд 2 и более раз, разрешены a-z 0-9 _ = - /
if(preg_match("/(\\/){2,}/", $url) == 1 || preg_match("/^[a-z0-9_=\\-\\/]+$/", $url) !== 1){
return 0;
}
$url = trim($url, '/');
# если domain.com
if(empty($url)){
$array[] = 'home';
return $array;
}
# число / в строке
$count = substr_count($url, '/');
# если domain.com/a
if($count == 0){
$array[] = $url;
return $array;
}
for($i=0; $i<$count; $i++){
# возвращает часть строки до первого вхождения needle (исключая needle).
$array[$i] = strstr($url, '/', true);
# возвращает часть строки после первого вхождения needle (с needle).
$url = strstr($url, '/');
# удалить первый символ в строке - /
$url = substr($url, 1);
}
# если domain.com/a/.../b, добавление b в конец массива
$array[] = $url;
return $array;