Страница 2 из 2

Re: ЧПУ

СообщениеДобавлено: 10 май 2010, 16:50
_main_
хочу сделать чпу, как мне генерить вместо ссылок вида ЗНАНИЕ ПРИНОСИТ СТРАХ, ссылки вида ЗНАНИЕ ПРИНОСИТ СТРАХ?

Ключевой момен здесь как генерить автоматически уникальное значение show = znanie_prinosit_strah

Re: ЧПУ

СообщениеДобавлено: 10 май 2010, 18:00
Zver
Тут уже дело за PHP, в ЧПУ делаем такс:

Код: Выделить всёРазвернуть
RewriteEngine On
RewriteBase /
RewriteRule ^show/(.+) show.php?name=1$


А php обрабатываем такс:
Код: Выделить всёРазвернуть

$url 
= $_GET['name'];
function urlDecode($url)
{
  // тут мы конвектируем урл в транслит, думую как не стоит объяснять
  $url = str_replace(' ', '_', $url); // убираем пробелы
  if(preg_match('/[^0-9a-zA-Z\.\_\-\ ]/i', $url)) // разрешены цифры, нижний пробел, точка, тире
  {
   return $url// выводим нужную запись из бд по титлу, тут уже придётся создавать дополнительное поле, или опять конвектировать в рус.
  }
  else
  
{
    return false// ну а тут ругаемся, если нас не устраивает урл
  }
}
echo 
urlDecode($url);
 

Re: ЧПУ

СообщениеДобавлено: 10 май 2010, 21:10
_main_
Zver писал(а):Тут уже дело за PHP, в ЧПУ делаем такс:

Код: Выделить всёРазвернуть
RewriteEngine On
RewriteBase /
RewriteRule ^show/(.+) show.php?name=1$


А php обрабатываем такс:
Код: Выделить всёРазвернуть

$url 
= $_GET['name'];
function urlDecode($url)
{
  // тут мы конвектируем урл в транслит, думую как не стоит объяснять
  $url = str_replace(' ', '_', $url); // убираем пробелы
  if(preg_match('/[^0-9a-zA-Z\.\_\-\ ]/i', $url)) // разрешены цифры, нижний пробел, точка, тире
  {
   return $url; // выводим нужную запись из бд по титлу, тут уже придётся создавать дополнительное поле, или опять конвектировать в рус.
  }
  else
  
{
    return false; // ну а тут ругаемся, если нас не устраивает урл
  }
}
echo urlDecode($url);
 


очевидно что если у меня есть пути вида http://homor.ru/show/1/ )) то у меня есть реврайтинг)) проблема в том есть ли какие то готовые либы по генерации чпу из заголовков я про соответсвие русских и латинских букв))