Как сделать скрипт более мультифункциональным PHP?

Добрый день есть следующий скрипт

<?php $urlCurrent = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";  #получаем нужный URL ?> // 
                  <?php $langed= ICL_LANGUAGE_CODE; #функция плагина для вывода текущего языка ?>
                  <?php $newUrlEn = str_replace('/ru/', '/en/', $urlCurrent); ?>
                  <?php $newUrlUa = str_replace('/ru/', '/ua/', $urlCurrent); ?>

Ситуация такая, у меня есть сайт, на 3 языках. Ru/En/UA. URL у них такая site.ru/en/contacts site.ru/ru/contacts site.ru/ua/contacts Т.е делается таким образом что бы лишь язык менялся

Проблема лишь в том что str_replace можно использовать не всегда Если к примеру пользователь будет на Украинской версии то str_replace не найдет /ru/ в URL И таким образом возникает вопрос, как сделать что бы находясь на любом языке я мог бы получить в перемене все 3 url К примеру я нахожу на странице о нас

site.ru/ua/about Получить в переменах еще

site.ru/en/about

site.ru/ru/about


Ответы (3 шт):

Автор решения: Dmitry
$currentURL = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$regions = [ '/ru/','/en/','/ua/' ];
$regionalLink['ru'] = str_replace( $regions, '/ru/', $currentURL );
$regionalLink['en'] = str_replace( $regions, '/en/', $currentURL );
$regionalLink['ua'] = str_replace( $regions, '/ua/', $currentURL );

Результат:

Array
(
    [ru] => https://mywebsite.ru/ru/contacts/
    [en] => https://mywebsite.ru/en/contacts/
    [ua] => https://mywebsite.ru/ua/contacts/
)
→ Ссылка
Автор решения: Евгений Тихии
    $currentUrl  = $_SERVER['HTTPS'] ? "https://" : "http://";
    $currentUrl .= "{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
    $langs      = ['/ru/', '/ua/', '/en/'];

    foreach ($langs as $lang) {
        $langsUrl[trim ($lang, '/')] = str_replace ($langs, $lang, $currentUrl);
    }

    var_dump ($langsUrl);

Выход: array(3) { ["ua"]=> string(23) "http://site.ru/ua/about" ["en"]=> string(23) "http://site.ru/en/about" ["ru"]=> string(23) "http://site.ru/ru/about" }

→ Ссылка
Автор решения: binliz

Так навскидку если вдруг сайтов станет больше накидал примерчик из вашего

        <?php
        $urlCurrent = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";  
        $languages = ['en','ru','ua'];
        $langed = ICL_LANGUAGE_CODE; 

// пройдем по всем языкам и посмотрим совпадает ли с шаблоном
        foreach($languages as $lang){
            $template = explode('/'.$lang.'/',$urlCurrent);
            if( count($template) === 2){
               break;
            }
        }

// если шаблон отсутствует прекращаем работу
        if(count($template) !== 2 ){
         throw new RuntimeException('url неправильный');
        }

        $current = $lang;

        $menuItems = [];
        foreach($languages as $lang){
           if( $lang !== null && $lang !== $current ){
              $menuItems[$lang] = implode('/'.$lang.'/', $template);
           }
       } 
// Результат в $menuItems
       var_export($menuItems);
→ Ссылка