|
|
|
| в общем хочу реализовать ЧПУ как "вконтакте"
переменнаяЗНАЧЕНИЕ
например, id123456
опускаю танцы с бубном над .htaccess,
пока реализовал таким образом:
<?
$str = 'id123456789';
echo $val = strpbrk($str, 0123456789);
echo $var = strtok($str, $val);
?>
|
Есть ли проще вариант? | |
|
|
|
|
|
|
|
для: а-я
(08.08.2009 в 00:03)
| |
<?
preg_match('/([^\d]+)(\d+)/', $str, $result);
|
| |
|
|
|
|
|
|
|
для: Loki
(10.08.2009 в 12:10)
| |
RewriteEngine On
RewriteRule ^([a-z]+)([0-9]+)?$ index.php?var=$1&value=$2 [L]
|
А так не подойдет?) | |
|
|
|
|
|
|
|
для: neadekvat
(10.08.2009 в 13:04)
| | Это вопрос автору:)
Лично я предпочитаю разбирать url в скрипте, ибо это дает много большую гибкость... | |
|
|
|
|
|
|
|
для: Loki
(10.08.2009 в 13:30)
| | А чем вам гибкость mod_rewrite не подходит? о.О | |
|
|
|
|
|
|
|
для: neadekvat
(10.08.2009 в 13:36)
| | В основном, мелкие придирки... например, есть url вида
/var1/value1/var2/valeu2...
и количество таких пар произвольно. Как решить это средствами реврайта? | |
|
|
|
|
|
|
|
для: Loki
(10.08.2009 в 14:04)
| | Я бы изменил логику так, чтобы количество значений в адресной строке было разумным.
Представьте себе строку site.ru/var1/value1/var2/valeu2/var1/value1/var2/valeu2/var1/value1/var2/valeu2/var1/value1/var2/valeu2/var1/value1/var2/valeu2/var1/value1/var2/valeu2/var1/value1/var2/valeu2/var1/value1/var2/valeu2/var1/value1/var2/valeu2/var1/value1/var2/valeu2/var1/value1/var2/valeu2
Сам смысл ЧПУ уже теряется, имхо. | |
|
|
|
|
|
|
|
для: neadekvat
(10.08.2009 в 14:07)
| | Менять логику под каждый новый скрипт - увольте.
Вот работает у Вас портал, и тут заказчик говорит "хочу многокритериальную поисковую форму с прямой адресацией". Будете менять логику? Раз на эти грабли наступите, второй... а на третий скажете - ну этот реврайт в баню.
Ну и далее по мелочи - нельзя управлять реврайтом из скрипта, нельзя назначить разным разделам разные правила (предварительно не прописав их в htaccess) и прочие мелкие неудобства, которые вроде как незаметны когда сайт единичный и которые выползают в полной своей красе, когда сайтов становится много. | |
|
|
|
|
|
|
|
для: Loki
(10.08.2009 в 14:20)
| | Что такое "прямая адресация"? | |
|
|
|
|
|
|
|
для: Trianon
(10.08.2009 в 14:21)
| | Это значит что если я дал ссылку на результаты поискового запроса, то ты его увидишь в том же виде, в каком его видел я. Читай - все критерии отбора надо засунуть в url | |
|
|
|
|
|
|
|
для: Loki
(10.08.2009 в 14:25)
| | Ага. Въехал.
Собственно, обычная практика для поискового интерфейса. | |
|
|
|
|
|
|
|
для: Trianon
(10.08.2009 в 14:40)
| | Именно поэтому в поисковых интерфейсах обычно и не используют mod_rewrite | |
|
|
|
|
|
|
|
для: Loki
(10.08.2009 в 14:20)
| | А вы всегда делаете все, что вам скажет заказчик?
Я вот никогда не видел, чтобы поисковой запрос в адресно строке выглядел так:
search/vselennaya/galaktika/zemlya/rossiya/gorod/uluca/dom/podezd/level/kvartira и еще чего-нибудь.
Даже гугл так не ивзращается.
Не всегда ведь нужно использовать ЧПУ | |
|
|
|
|
|
|
|
для: neadekvat
(10.08.2009 в 14:26)
| | >А вы всегда делаете все, что вам скажет заказчик?
Если его желания подкреплены финансово - почему нет.
>Даже гугл так не ивзращается.
Дурацкий аргумент, не находите? У меня на него и контр есть: даже zend так не извращается и разбирает url в скрипте. Теперь померим у кого из них пиписька длиннее? | |
|
|
|
|
|
|
|
для: Loki
(10.08.2009 в 14:31)
| | В любом случаи, пока мне удобно делать через mod_rewrite, я буду это делать именно так. | |
|
|
|
|
|
|
|
для: neadekvat
(10.08.2009 в 14:39)
| | А я никого ни за что и не агитировал. Вероятно, вы прочли в моем сообщении что-то, чего там нет:) | |
|
|
|
|
|
|
|
для: neadekvat
(10.08.2009 в 14:26)
| | Я отказался от mod_rewrite в пользу разбора роута внутри скрипта ещё когда zend framework в альфах ходил. ZF очень гибкий, что, с другой стороны, является его недостатком (излишняя монструозность). ZF доставил мне мегаполезный опыт в области design patterns. Но я всё равно им пользоваться не буду, хотя и продолжу его изучать, чего и вам советую :) | |
|
|
|
|
|
|
|
для: Саня
(10.08.2009 в 15:37)
| | Все надо делать последовательно.
Для начала я хочу понять принципы ООП и научится на нем что-то делать, а уж потом браться за ZF. | |
|
|
|
|
|
|
|
для: neadekvat
(10.08.2009 в 16:04)
| | Существует два способа познания — синтез и анализ. Синтез — это когда вы на основе изначальных данных строите свою систему и тем самым познаёте тонкости. Анализ — берёте готовую, сколь угодно сложную систему, и разбираете её на составные части. Синтез обеспечивает более поное изучение предмета. Анализ обеспечивет более быстрое изучение предмета.
Так получилось, что я изучал PHP в отрыве от интернета. То есть в отрыве от готовых проектов и библиотек — методом синтеза. В качестве исходных данных выступала книга "Самоучитель PHP5" (издательство БХВ-Петербург, 2004 г.). Авторы: Кузнецов М.В, Симдянов И.В. Вам же я предлагаю прямо сейчас скачать последний релиз ZF и документацию к нему. И погрузиться в анализ. Если что, обращайтесь на наш форум. Мы с Loki вам поможем. | |
|
|
|
|
|
|
|
для: Саня
(10.08.2009 в 16:32)
| | Можно сколько угодно смотреть в исходный код как баран на новые ворота.
Сначала я предпочитаю изучать основы. Без них никуда. Если бы я не знал, как объявляется переменная, то и смысла смотреть в код не было б. Изучив основной материал, я начинаю углубляться. В ту сторону, в эту. Расширяю свои знания. Но я понимаю смысл того, что учу, понимаю что где происходит, а чего не понимаю совсем - смотрю в документации.
Спасибо за советы и обещание помощи. | |
|
|
|