嗨,我有这个字符串,例如
http://aaa-aaaa.com/bbbb-bbbbbbbbbb-2/it/clients/
我想在bbbb-bbbbbbbbbb-2/
之后只移除3个字符,所以基本上我想删除it/
部分(此it/
部分可能并非总是it
但它可以是es/
或en/
或不同语言总是2个字符)
答案 0 :(得分:1)
如果URL结构不变,以下内容将起作用。我假设您要删除网址的语言部分。
<?php
$url = "http://aaa-aaaa.com/bbbb-bbbbbbbbbb-2/it/clients/";
$parsedURL = parse_url($url);
$path = explode('/', $parsedURL['path']);
unset($path[2]);
$url = "{$parsedURL['scheme']}://{$parsedURL['host']}";
$url .= implode('/', $path);
var_dump($url);
// string(47) "http://aaa-aaaa.com/bbbb-bbbbbbbbbb-2/clients/"
答案 1 :(得分:0)
您可以使用正则表达式选择字符串的目标部分并在preg_replace()
中运行。
$url = "http://aaa-aaaa.com/bbbb-bbbbbbbbbb-2/it/clients/";
echo preg_replace("@(.*)\w{2}/([^/]+/)$@", "$1$2", $url);
查看demo
中的代码结果答案 2 :(得分:0)
在数组中定义语言。如果数组中未定义语言,则URL将相同。
$mLanguages = ["en","it","bg","gr"];
$mURL = "http://aaa-aaaa.com/bbbb-bbbbbbbbbb-2/it/clients/";
$mURL = removeLanguageFromURL($mURL, $mLanguages);
echo $mURL; // Output http://aaa-aaaa.com/bbbb-bbbbbbbbbb-2/clients/
function removeLanguageFromUrl($mURL, $mLanguages){
foreach($mLanguages as $language){ // Search languages
if(strpos($mURL, $language) !== false) // If language is found in url remove it
$mURL = str_replace('/' . $language,'', $mURL);
}
return $mURL;
}