Gistrec

Add/Delete get-param in requestUri

Aug 13th, 2018
294
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.38 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4.  * Функция нужна для удаления GET-параметра из $_SERVER['REQUEST_URI]
  5.  * @param  string $requestUri $_SERVER['REQUEST_URI];
  6.  * @param  string $param      Параметр, который нужно удалить
  7.  * @return string             Новая строка, без параметра, который нужно было удалить
  8.  */
  9. function delParam(string $requestUri, string $param) : string {
  10.     $pieces = explode('?', $requestUri);
  11.     // Если есть GET-параметры
  12.     if (count($pieces) == 2) {
  13.         // Получаем все GET-параметры
  14.         $params = array();
  15.         parse_str($string[1], $params);
  16.         // Если есть нужный параметр - удаляем его
  17.         if (!empty($params[$param])) {
  18.             unset($params[$param]);
  19.         }
  20.         // Создаем новую строку из GET-параметров
  21.         $pieces[1] = http_build_query($params);
  22.         // Соединяем две части REQUEST_URI
  23.         if ($pieces[1] != "") {
  24.             $requestUri = implode('?', $pieces);
  25.         }else {
  26.             $requestUri = $pieces[0];
  27.         }
  28.     }
  29.     return $requestUri;
  30. }
  31.  
  32. /**
  33.  * Функция нужна для добавления GET-параметра в url
  34.  * @param  string $requestUri $_SERVER['REQUEST_URI];
  35.  * @param  string $param      Параметр, который нужно добавить
  36.  * @param  string $value      Значение параметра
  37.  * @return string             Новая строка, с параметром, который нужно было добавить
  38.  */
  39. function addUrlParam(string $requestUri, string $param, string $value) : string {
  40.     $pieces = explode('?', $requestUri);
  41.     // Если есть GET-параметры
  42.     if (count($pieces) == 2) {
  43.         // Получаем все параметры
  44.         $params = explode('&', $pieces[1]);
  45.         // Во всех параметрах ищем параметр, который нужно задать/переопределить
  46.         foreach ($params as $index => $getParam) {
  47.             $getParam = explode('=', $getParam);
  48.             if (strtolower($getParam[0]) == strtolower($param)) {
  49.                 unset($params[$index]);
  50.             }
  51.         }
  52.         $params[] = "$param=$value";
  53.         $pieces[1] = implode('&', $params);
  54.     }else {
  55.         $pieces[1] .= "$param=$value";
  56.     }
  57.     $requestUri = implode('?', $pieces);
  58.     return $requestUri;
  59. }
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment