如何从字符串中剥离文本(如果包含)

时间:2019-07-05 17:20:17

标签: php strip

我有一个字符串$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 :(得分:0)

您可以使用strtok从网址中删除查询字符串。

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

DEMO

基于评论的答案。
你可以使用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');


?>

DEMO

答案 1 :(得分:0)

最简单的解决方案

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

答案 2 :(得分:0)

要仅删除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

答案 3 :(得分:0)

如果您的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个字符。