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
Форумы портала PHP.SU :: Версия для печати :: Проблема с легуляркой
Форумы портала PHP.SU » » Если скрипт не работает » Проблема с легуляркой

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

1. Zevs13 - 13 Июля, 2014 - 23:15:49 - перейти к сообщению
Доброго времени суток.
В программировании на 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.  
2. OrmaJever - 13 Июля, 2014 - 23:58:24 - перейти к сообщению
по-моему парсить адрес регуляркой не самая лучшая идея, может его просто делить по / ?
3. Zevs13 - 14 Июля, 2014 - 13:40:51 - перейти к сообщению
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{}

как бы вы разбили такую строку?
4. Panoptik - 14 Июля, 2014 - 15:01:08 - перейти к сообщению
есть функция parse_url - полезна для разбора полного урла
parse_str - разбор гет параметров
explode, split - разбивает строку в массив по разделителю

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

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

 

Powered by ExBB FM 1.0 RC1