在特定字符串后仅删除3个字符

时间:2017-03-17 11:39:59

标签: php regex string url

嗨,我有这个字符串,例如

http://aaa-aaaa.com/bbbb-bbbbbbbbbb-2/it/clients/

我想在bbbb-bbbbbbbbbb-2/之后只移除3个字符,所以基本上我想删除it/部分(此it/部分可能并非总是it但它可以是es/en/或不同语言总是2个字符)

3 个答案:

答案 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;

}