我有一个字符串$current_url
,可以包含2个不同的值:
http://url.com/index.php&lang=en
or
http://url.com/index.php&lang=jp
在两种情况下,我都需要剥离查询部分,以便得到:http://url.com/index.php
如何在php中做到这一点?
谢谢。
答案 0 :(得分:0)
您可以使用strtok从网址中删除查询字符串。
<?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');
?>
答案 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个字符。