Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как лучше реализовать парсинг строки?
 
 автор: а-я   (08.08.2009 в 00:03)   письмо автору
 
 

в общем хочу реализовать ЧПУ как "вконтакте"

переменнаяЗНАЧЕНИЕ

например, id123456

опускаю танцы с бубном над .htaccess,

пока реализовал таким образом:


<?
$str 
'id123456789';

echo 
$val strpbrk($str0123456789);
echo 
$var strtok($str$val);
?>


Есть ли проще вариант?

  Ответить  
 
 автор: Loki   (10.08.2009 в 12:10)   письмо автору
 
   для: а-я   (08.08.2009 в 00:03)
 

<?
preg_match
('/([^\d]+)(\d+)/'$str$result);

  Ответить  
 
 автор: neadekvat   (10.08.2009 в 13:04)   письмо автору
 
   для: Loki   (10.08.2009 в 12:10)
 


RewriteEngine On
RewriteRule  ^([a-z]+)([0-9]+)?$ index.php?var=$1&value=$2     [L]

А так не подойдет?)

  Ответить  
 
 автор: Loki   (10.08.2009 в 13:30)   письмо автору
 
   для: neadekvat   (10.08.2009 в 13:04)
 

Это вопрос автору:)
Лично я предпочитаю разбирать url в скрипте, ибо это дает много большую гибкость...

  Ответить  
 
 автор: neadekvat   (10.08.2009 в 13:36)   письмо автору
 
   для: Loki   (10.08.2009 в 13:30)
 

А чем вам гибкость mod_rewrite не подходит? о.О

  Ответить  
 
 автор: Loki   (10.08.2009 в 14:04)   письмо автору
 
   для: neadekvat   (10.08.2009 в 13:36)
 

В основном, мелкие придирки... например, есть url вида
/var1/value1/var2/valeu2...
и количество таких пар произвольно. Как решить это средствами реврайта?

  Ответить  
 
 автор: neadekvat   (10.08.2009 в 14:07)   письмо автору
 
   для: 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
Сам смысл ЧПУ уже теряется, имхо.

  Ответить  
 
 автор: Loki   (10.08.2009 в 14:20)   письмо автору
 
   для: neadekvat   (10.08.2009 в 14:07)
 

Менять логику под каждый новый скрипт - увольте.
Вот работает у Вас портал, и тут заказчик говорит "хочу многокритериальную поисковую форму с прямой адресацией". Будете менять логику? Раз на эти грабли наступите, второй... а на третий скажете - ну этот реврайт в баню.
Ну и далее по мелочи - нельзя управлять реврайтом из скрипта, нельзя назначить разным разделам разные правила (предварительно не прописав их в htaccess) и прочие мелкие неудобства, которые вроде как незаметны когда сайт единичный и которые выползают в полной своей красе, когда сайтов становится много.

  Ответить  
 
 автор: Trianon   (10.08.2009 в 14:21)   письмо автору
 
   для: Loki   (10.08.2009 в 14:20)
 

Что такое "прямая адресация"?

  Ответить  
 
 автор: Loki   (10.08.2009 в 14:25)   письмо автору
 
   для: Trianon   (10.08.2009 в 14:21)
 

Это значит что если я дал ссылку на результаты поискового запроса, то ты его увидишь в том же виде, в каком его видел я. Читай - все критерии отбора надо засунуть в url

  Ответить  
 
 автор: Trianon   (10.08.2009 в 14:40)   письмо автору
 
   для: Loki   (10.08.2009 в 14:25)
 

Ага. Въехал.
Собственно, обычная практика для поискового интерфейса.

  Ответить  
 
 автор: Loki   (10.08.2009 в 15:27)   письмо автору
 
   для: Trianon   (10.08.2009 в 14:40)
 

Именно поэтому в поисковых интерфейсах обычно и не используют mod_rewrite

  Ответить  
 
 автор: neadekvat   (10.08.2009 в 14:26)   письмо автору
 
   для: Loki   (10.08.2009 в 14:20)
 

А вы всегда делаете все, что вам скажет заказчик?
Я вот никогда не видел, чтобы поисковой запрос в адресно строке выглядел так:
search/vselennaya/galaktika/zemlya/rossiya/gorod/uluca/dom/podezd/level/kvartira и еще чего-нибудь.
Даже гугл так не ивзращается.
Не всегда ведь нужно использовать ЧПУ

  Ответить  
 
 автор: Loki   (10.08.2009 в 14:31)   письмо автору
 
   для: neadekvat   (10.08.2009 в 14:26)
 

>А вы всегда делаете все, что вам скажет заказчик?
Если его желания подкреплены финансово - почему нет.

>Даже гугл так не ивзращается.
Дурацкий аргумент, не находите? У меня на него и контр есть: даже zend так не извращается и разбирает url в скрипте. Теперь померим у кого из них пиписька длиннее?

  Ответить  
 
 автор: neadekvat   (10.08.2009 в 14:39)   письмо автору
 
   для: Loki   (10.08.2009 в 14:31)
 

В любом случаи, пока мне удобно делать через mod_rewrite, я буду это делать именно так.

  Ответить  
 
 автор: Loki   (10.08.2009 в 15:26)   письмо автору
 
   для: neadekvat   (10.08.2009 в 14:39)
 

А я никого ни за что и не агитировал. Вероятно, вы прочли в моем сообщении что-то, чего там нет:)

  Ответить  
 
 автор: Саня   (10.08.2009 в 15:37)   письмо автору
 
   для: neadekvat   (10.08.2009 в 14:26)
 

Я отказался от mod_rewrite в пользу разбора роута внутри скрипта ещё когда zend framework в альфах ходил. ZF очень гибкий, что, с другой стороны, является его недостатком (излишняя монструозность). ZF доставил мне мегаполезный опыт в области design patterns. Но я всё равно им пользоваться не буду, хотя и продолжу его изучать, чего и вам советую :)

  Ответить  
 
 автор: neadekvat   (10.08.2009 в 16:04)   письмо автору
 
   для: Саня   (10.08.2009 в 15:37)
 

Все надо делать последовательно.
Для начала я хочу понять принципы ООП и научится на нем что-то делать, а уж потом браться за ZF.

  Ответить  
 
 автор: Саня   (10.08.2009 в 16:32)   письмо автору
 
   для: neadekvat   (10.08.2009 в 16:04)
 

Существует два способа познания — синтез и анализ. Синтез — это когда вы на основе изначальных данных строите свою систему и тем самым познаёте тонкости. Анализ — берёте готовую, сколь угодно сложную систему, и разбираете её на составные части. Синтез обеспечивает более поное изучение предмета. Анализ обеспечивет более быстрое изучение предмета.
Так получилось, что я изучал PHP в отрыве от интернета. То есть в отрыве от готовых проектов и библиотек — методом синтеза. В качестве исходных данных выступала книга "Самоучитель PHP5" (издательство БХВ-Петербург, 2004 г.). Авторы: Кузнецов М.В, Симдянов И.В. Вам же я предлагаю прямо сейчас скачать последний релиз ZF и документацию к нему. И погрузиться в анализ. Если что, обращайтесь на наш форум. Мы с Loki вам поможем.

  Ответить  
 
 автор: neadekvat   (10.08.2009 в 17:24)   письмо автору
 
   для: Саня   (10.08.2009 в 16:32)
 

Можно сколько угодно смотреть в исходный код как баран на новые ворота.
Сначала я предпочитаю изучать основы. Без них никуда. Если бы я не знал, как объявляется переменная, то и смысла смотреть в код не было б. Изучив основной материал, я начинаю углубляться. В ту сторону, в эту. Расширяю свои знания. Но я понимаю смысл того, что учу, понимаю что где происходит, а чего не понимаю совсем - смотрю в документации.
Спасибо за советы и обещание помощи.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования