2017-02-13 1 views
-2

Я разрабатываю двуязычный сайт в кодеигнорирую, и я создал языковые файлы. Все работает отлично, за исключением при переключении языка я хочу, чтобы заменить язык abbraviation в URL на 31-е и 32-е позиции, начиная с 0.PHP для замены 2 символа на n-й позиции в строке

English URL:

$ URL = HTTP: // локальным/а /index.php/ ан/новости/название/новой версии-оф-GoldenDict-с-Dzongkha

дзонг-кэ URL:

$ URL = HTTP://localhost/abc/index.php/ DZ/Новости/название/новой версии-оф-GoldenDict-с-Dzongkha

я просто хочу, чтобы изменить PHP ан к дз

я попытался

$ URL = HTTP: //localhost/abc/index.php/ ан/новости/название/новой версии-оф-GoldenDict-с-Dzongkha

$ lang_id = 'dz';

$ old_lang = substr ($ url, 31, 2);

$ newurl = str_replace ($ old_lang, $ lang_id, $ url);

Однако выше коды меняют dz на en, но также заменяют символы 45 и 46. Это происходит после преобразования.

$ URL = HTTP: //localhost/abc/index.php/ DZ/Новости/название/дг ш-версия-оф-GoldenDict-с-Dzongkha

Любой тот, у кого есть идея, что происходит

+1

добрый старый '$ newurl = str_replace ('/ en /', '/ dz /', $ url);' может быть достаточно здесь? – Scuzzy

+1

Зачем вам нужно заменять языковые строки? Вы должны правильно строить URL-адреса в соответствии с текущим языком. Включая название, которое, похоже, теперь привязано к одному языку. – jeroen

ответ

0

Попробуйте это -

$url="http://localhost/abc/index.php/en/news/title/new-version-of-goldendict-with-dzongkha"; 

echo $str = substr_replace($url,'dz',31,2); 

Надеется, что это поможет вам.

+0

работал без сбоев, я вижу, что сделал там, и слишком плохо, я предположил, что substr_replace работает только с 5 параметрами ... thanks @Afshan – manoj

2

Поскольку вы подразумеваете, что код страны всегда находится на 31-й позиции в вашей строке, вы можете использовать функцию substr_replace, чтобы ограничить область вашей замены.

$newurl = substr_replace($old_lang, $lang_id, $url, 31, 2); 

Другим вариант должна быть более конкретным в поисковой строке в соответствии с предложения Scuzzy в комментариях: $newurl = str_replace('/en/','/dz/',$url);

-1
<?php 

$url = "http://localhost/abc/index.php/en/news/title/new-version-of-goldendict-with-dzongkha"; 

function changeLanguage($url, $language) 
{ 
    $new_url = ""; 
    $url_broken = explode("/", $url); 
    foreach ($url_broken as $key => $value) { 
     if (strpos($value, ".php")!==false) { 
      $lang_index = $key+1; 
      break; 
     } 
    } 
    if (isset($lang_index)) { 
     $url_broken[$lang_index] = $language; 
    } 
    $new_url = implode("/", $url_broken); 
    return $new_url; 
} 

$url = changeLanguage($url, "dz"); 
var_dump($url); 

Этот метод поможет вам изменить язык на основе шаблона не по позиции. И, конечно, в этом я считаю, что язык будет после *.php/