Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с легуляркой

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: не работает регулярка
Zevs13
Отправлено: 13 Июля, 2014 - 23:15:49
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Доброго времени суток.
В программировании на php, да и вообще в программировании я не силен, только начал недавно изучать.

Делаю сайт на своей мини MVC.

беру адрес $_SERVER['REQUEST_URI'] и проганяю его регуляркой, если есть совпадения то подключаю нужный контроллер и екшн, если нет то 404. Страничка категорий('controller_name' => 'category',) открывает, а вот место главной страници(типа: www.mysite.net) выводит 404.

Если вывести $_SERVER['REQUEST_URI'] то выведет " / ", и по плану все должно работать Хм

PHP:
скопировать код в буфер обмена
  1.  
  2. class Route
  3. {      
  4.         static function start()
  5.         {
  6.                
  7.                 $uri = trim($_SERVER['REQUEST_URI']);
  8.                
  9.                 $options = array(
  10.                         '/^\/$/' => array( 'controller_name' => 'category','action_name' => 'index'),
  11.                         '/^(\/category)\/?$/' => array( 'controller_name' => 'category','action_name' => 'index'),
  12.                         '/^(\/registration)\/?$/' => array( 'controller_name' => 'registration','action_name' => 'index')
  13.                         );
  14.                
  15.                 foreach($options as $key => $value){
  16.                         if(preg_match($key,$uri)){
  17.                                 //получаем имя контроллера и екшена
  18.                                 $controller_name = $value['controller_name'];
  19.                                 $action_name = $value['action_name'];
  20.                         }else{
  21.                                 $controller_name = '404';
  22.                                 $action_name = 'index';
  23.                         }
  24.                 }
  25.  
  26. ...
  27.  
  28.  

(Отредактировано автором: 13 Июля, 2014 - 23:17:21)

 
 Top
OrmaJever Модератор
Отправлено: 13 Июля, 2014 - 23:58:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




по-моему парсить адрес регуляркой не самая лучшая идея, может его просто делить по / ?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Zevs13
Отправлено: 14 Июля, 2014 - 13:40:51
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




OrmaJever


PHP:
скопировать код в буфер обмена
  1. function routes(){
  2.                 $routes = explode('/',strtolower($_SERVER['REQUEST_URI']));
  3.                 return $routes;
  4.         }


если у меня строка www.mysite.net/category/other/page/2, как мне разделить ее? если могут быть адреса: .mysite.net/category, .mysite.net/category/other, www.mysite.net/category/other/page/2, то у меня будет все замусоренно операторами If(){}else{}

как бы вы разбили такую строку?

(Отредактировано автором: 14 Июля, 2014 - 13:41:17)

 
 Top
Panoptik
Отправлено: 14 Июля, 2014 - 15:01:08
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




есть функция parse_url - полезна для разбора полного урла
parse_str - разбор гет параметров
explode, split - разбивает строку в массив по разделителю

ну еще разные функции для работы со строками вроде strpos могут пригодиться

всё же не изучив матчасть лучше не делать серьезные велосипеды


-----
Just do it
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB