PHP - 更改网址中的第一个文件夹,但保留其余文件夹

时间:2015-05-12 09:08:13

标签: php

使用if else语句,我想php检查url中的第一个文件夹是否为(en), 例: http://www.domain.com/en/newyork/car/ 如果第一个文件夹是[en],如上例所示,那么我想更改我在页面上的链接的ahref

更改链接: 烯

将链接更改为: 茹

看看上面的例子,我唯一想要改变的是en或ru,但保留当前页面的剩余网址

:如果当前页面网址为http://www.domain.com/en/newyork/car/ 链接将是俄罗斯

3 个答案:

答案 0 :(得分:2)

<?php
$url = 'www.domain.com/en/newyork/car/';
$url_arr = explode("/en/", $url);
$new_url = implode("/ru/", $url_arr);
?>

答案 1 :(得分:1)

要获取页面的当前语言,首先必须获取当前URL的路径,然后在第一个斜杠后获取字符串。你可以这样做:

// Get the current URL
$current_url = $_SERVER['REQUEST_URI'];

// Get the 'path' portion (without things like 'http')
$url = parse_url($current_url);

// Split the String in an array
$parts = explode('/', $url['path']);
$lang = $parts[1];
$prepath = $url['scheme'] . '://' . $url['host'] . $parts[0];

// Array slice to get all remaining parts
$postpath = array_slice($parts, 2);

// Append the first part of your path, the new language, and finally 
// the remainder of your URL.
$newurl = $prepath . '/' . ($lang == 'ru'?'':'ru/') . implode('/', $postpath);

在此之后,您可以在页面上使用锚点以允许用户更改:

<a href="<?php echo $newurl;?>">Change Language</a>

答案 2 :(得分:0)

function changeUrlComponent($url, $componentPos, $newVal) {
    $url = parse_url($url);
    $arr = explode('/',$url['path']);
    $arr[$componentPos] = $newVal;
    $url['path'] = implode('/',$arr);
    return $url['scheme'] .'://'. $url['host'] . $url['path'];
}

echo changeUrlComponent('http://www.domain.com/en/newyork/car/', 1, 'ru');

希望这会有所帮助。另请注意,您可以根据预期的url组件数添加更多值。请参阅this。 componentPos也应该从目录/路径的1到长度开始。这将是一种比上面回答的更通用的方法,因为它们太过于与网址中存在lang的期望相结合。