chelovekmuravei
@chelovekmuravei
\(-_-)/ раз два три четыре

Красивые ссылки и регулярное выражение?

Решил сделать красивые ссылки и пришёл к такому варианту. Если запрос соответствует 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;
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
пришёл к такому варианту.

осталось совсем чтуь-чуть, прийти на гитхаб
https://github.com/klein/klein.php
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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