@tvelforce

Как вырезать из строки слово?

Доброго времени суток.
Имеется строка
http://blog.des/?go=category&q=backend&page=2

Из нее нужно вырезать вот эту часть "&page=2", как вы поняли номер страницы может меняться, так же как и все остальные переменные.
Через регулярки получается вырезать все get переменные, а нужно только page.
Подскажите как это сделать.
Заранее благодарен.

Спасибо за регулярку.
$this_url = preg_replace("/[&?]page=([0-9]+)/", "", $this_url);
echo $this_url;
  • Вопрос задан
  • 259 просмотров
Решения вопроса 2
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Разобрать URL можно с помощью функции parse_url.
Получить отдельные параметры строки запроса можно методом parse_str.

$url = 'http://blog.des/?go=category&q=backend&page=2';
// в элементе с именем query будет строка параметров запроса
// go=category&q=backend&page=2
$query = parse_url($url)['query'];
// функция parse_str разберет строку параметров запроса
// и передаст ассоциативный массив в переменную $params
parse_str($query, $params);
// выводим значение параметра page
echo $params['page'];

Либо можно сразу в parse_str передавать URL:

$url = 'http://blog.des/?go=category&q=backend&page=2';
parse_str($url, $params);
echo $params['page'];

Если вы хотите получить значение параметра для текущей страницы, то проще это делать через $_GET:

echo 'Текущая страница: '.$_GET['page'];

Удалить параметр из строки запроса можно просто собрав новую строку, опустив не нужные параметры. Для текущего адреса примерно так:

$queryString = [];

foreach ($_GET as $key => $value) {
  // если параметр page, пропускаем его
  if ($key == 'page') { continue; }
  // остальные добавляем в queryString
  $queryString[$key] = $value;
}

// собираем массив новых параметров в строку параметров запроса
$queryString = http_build_query($queryString);

// новые параметры
echo $queryString;

Получив новую строку параметров, можно сформировать новый URL и выполнить перенаправление на него:

$url = "http://blog.des/";

if ($queryString != '')
{
  $url .= "?".$queryString;
}

// это следует делать до первого вывода, иначе могут быть ошибки/предупреждения
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.$url);
Ответ написан
riot26
@riot26
<:З )~~
<?php
$str = "http://blog.des/?go=category&q=backend&page=2"; 
preg_match("/[&?]page=([0-9]+)/", $str, $matches);
echo $matches[1]; //2
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы