Zend Framework2 — Очистка URL в переполнении стека

Я бы хотел «очистить» мой URL с помощью фреймворка PHP ZF2. URL выглядит следующим образом:

http://sitename.com/testingtesting/?inviter123

Часть между именем сайта и параметром строки запроса — это та, которую я хотел бы выделить:

testingtesting

Также имя не обязательно должно быть тестирующим, оно может быть тестовым или любым другим, длина строки может варьироваться, что меня больше всего смущает. Вопрос здесь в том, как вынести все, что между / / строками, независимо от его размера …

Постскриптум На данный момент я сделал следующее:

 $controllerName =  substr($_SERVER["REQUEST_URI"],1,10);

Что возвращает мне следующее:

/testingtesting/?inviter123

Теперь вопрос в том, как избавиться от нежелательного содержимого в строке …

Редактировать:

Я решил использовать метод substr в PHP, я пропускаю первый элемент в массиве строк, но как получить динамическую длину того, что находится между / hereitcanbeanysize / …

Пробовал решение Роберта, вот что я получаю:

массив (4) {[«схема»] => строка (4) «http» [«хост»] => строка (12) «sitename.com» [«путь»] => строка (16) «/ testtesting / «[» query «] => string (10)» inviter123 «}

Теперь мне нужно избавиться от // в элементе «path» массива … Как я могу это сделать?

0

Решение

Ты можешь использовать parse_url () функционировать и объединять хост, схему и путь без запроса части.

Проверьте этот код:

$urlParts = parse_url('http://sitename.com/testingtesting/?inviter123');

echo str_replace('/' , '', $urlParts['path']);
2

Другие решения

Я думаю, что лучший способ сделать то, что вы хотите, это переписать URL в:
.Htaccess -если вы используете сервер Apache, или web.config -если вы используете IIS-.

Кроме того, вы можете захватить имя строки перед строкой запроса, чтобы использовать ее в логике вашего приложения.

.Пример htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/testingtesting/(.*) /$1 [QSA]

Если вы просто хотите отобразить чистый URL:

$cleanUrl = str_replace('/testingtesting','', $_SERVER["REQUEST_URI"]);
0

Если вы используете ZF2, вы не должны использовать нативные функции php для такого рода вещей, вы должны использовать RouteMach Класс для поиска / извлечения сегментов вашего совпавшего URL:

'route_name' => array(
'type' => 'segment',
'options' => array(
'route' => '/:controller[/:action]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]+',
'action'     => '[a-zA-Z][a-zA-Z0-9_-]+',
),
'defaults' => array(
'controller' => 'Application\Controller\IndexController',
'action'     => 'index',
),
)
)

Теперь вы можете получить контроллер и действие из route-match (Zend\Mvc\Router\RouteMatch);

/** @var MvcEvent $event */
$routeMatch = $event->getRouteMatch();
$controller = $routeMatch->getParam('controller');
$action = $routeMatch->getParam('action');

Проверьте также документация ZF2 по маршрутизация Вот.

Вы используете фреймворк, убедитесь, что вы знаете, как правильно его использовать. Использование нативных методов php, таких как substr а также parse_url определенно НЕ путь, когда вы хотите получить сегменты из вашего URL.

Обратитесь к руководству, чтобы ознакомиться с основами ZF2, например: Приложение скелета ZF2 (также известное как приложение альбома)

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector