Как убрать текст из строки, если он содержится - PullRequest
1 голос
/ 05 июля 2019

У меня есть строка $current_url, которая может содержать 2 разных значения:

http://url.com/index.php&lang=en
or
http://url.com/index.php&lang=jp

в обоих случаях мне нужно удалить часть запроса, чтобы я получил: http://url.com/index.php

Как я могу сделать это в php?

Спасибо.

Ответы [ 4 ]

0 голосов
/ 06 июля 2019

Если значение вашего параметра lang всегда имеет длину 2, что должно быть в случае языков, вы можете использовать:

if(strpos($current_url, '&lang=') !== false){
    $current_url = str_replace(substr($current_url, strpos($current_url, '&lang='), 8), '', $current_url);
}

Если подстрока "&lang=" присутствует в $current_url удаляет подстроку длиной 8, начиная с позиции "&lang=".Таким образом, он в основном удаляет "&lang=" плюс 2 следующих символа.

0 голосов
/ 06 июля 2019

простейшее решение

$url = 'http://url.com/index.php&lang=en'; $array = explode('&', $url); echo $new_url =$array[0];

0 голосов
/ 06 июля 2019

Чтобы удалить только запрос lang, сделайте это

$url = 'http://url.com/index.php&lang=en&id=1';
$array = explode('&lang=en', $url);
echo $new_url  = $array[0] .''.$array[1];

//output http://url.com/index.php&id=1

So this way it only removes the lang query and keep other queries
0 голосов
/ 05 июля 2019

Вы можете использовать strtok , чтобы удалить строку запроса из URL.

<?php
echo $url=strtok('http://url.com/index.php&lang=jp','&');
?>

ДЕМО

Ответ основан на комментарии.
вы можете использовать preg_replace https://www.codexworld.com/how-to/remove-specific-parameter-from-url-query-string-php/

   <?php
$url = 'http://url.com/index.php?page=site&lang=jp';

function remove_querry_string($url_name, $key) {
    $url = preg_replace('/(?:&|(\?))' . $key . '=[^&]*(?(1)&|)?/i', "$1", $url_name);
    $url = rtrim($url, '?');
    $url = rtrim($url, '&');
    return $url;
}

echo remove_querry_string($url, 'lang');


?>

ДЕМО

...