PHP разделить строки - PullRequest
       1

PHP разделить строки

0 голосов
/ 31 марта 2011

Я работаю с функцией разнесения PHP.Эта функция используется для определения URL страницы.

В настройках нашего веб-сайта URL-адреса страницы:

  1. / app / home / (домашняя страница)
  2. / app / answers/ list (страница списка поиска)
  3. / app / answers / detail / a_id / 309 (страница сведений об ответе)
  4. / app / answers/ list / session / L3NpZC9WVmpBQWlxaw% 3D% 3D

В настоящее время я использую функцию разнесения, чтобы разделить строки и сохранить их в массиве.

$currentLocation  =explode("/",$_SERVER["REQUEST_URI"]);

Array ( [0] => [1] => app [2] => answers [3] => list [4] => session [5] => L3NpZC9WVmpBQWlxaw%3D%3D ) 

И еще много условий условия IF Else:

if ($currentLocation [2]=='home')
        {
            $this->data['pageURL']=$currentLocation [2]; //Home directory
        }
        else if($currentLocation [2]=='answers')
        {
            $this->data['pageURL']= $currentLocation [4];
        }

Мне интересно, есть ли разумный способ добиться этого.Спасибо./ app / часть URL всегда фиксирована, остальное изменится.

Ура, Цин

Ответы [ 2 ]

2 голосов
/ 31 марта 2011

Ищите Zend framework Router

1 голос
/ 31 марта 2011

Как правило, когда у вас много таких условий if / else, было бы более распространенным использовать вместо этого оператор switch:

switch $currentLocation[2] {
    case 'home' : $this->data['pageURL']=$currentLocation[2]; break;
    case 'answers' : $this->data['pageURL']= $currentLocation[4]; break;
    default: $this->data['pageURL']= $currentLocation[4]; break;
}

Это аккуратнее, чем куча elseif блоков, хотя на самом деле это не намного меньше кода.

Однако в этом случае я бы сказал, что вы могли бы добиться лучших результатов, используя набор правил перезаписи. Вы не указали его, но, учитывая URL-адреса, которые вы описали, возможно, вы используете mod_rewrite (или аналогичный) в конфигурации вашего сервера, чтобы перенаправить «дружественный» URL на реальную страницу PHP?

Здесь я бы предложил работать. Используя набор правил mod_rewrite, вы можете заставить страницу PHP получать обычные $_GET переменные.

mod_rewrite позволяет вам иметь URL-адреса, подобные /app/answers/detail/a_id/309, но PHP-программа получит его, как если бы пользователь набрал app.php?page=answers&section=detail&a_id=309. Правила переписывания основаны на регулярных выражениях, и вы можете сделать их довольно сложными, чтобы учесть множество различных форматов URL.

Если вы реализуете это, вы, вероятно, можете отбросить всю работу, которую вы выполняете в программе, с помощью explode(), а затем выбрать соответствующие биты URL и заменить все это примерно пятью строками в конфигурации вашего сервера ( .htaccess).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...