2017-02-13 83 views
-2

我正在開發codeignitor中的雙語網站,並且我已經創建了語言文件。所有的工作切換語言時,除了罰款,我想,以取代在31日和第32位的URL語言abbraviation爲0PHP替換字符串中第n個位置的2個字符

英文開頭的URL:

$ URL = HTTP://本地主機/ ABC /index.php/ /新聞/標題/新版本的-goldendict與 - 不丹文

不丹文網址:

$ URL = HTTP:/ /localhost/abc/index.php/ DZ /新聞/標題/新版本的-goldendict與 - 不丹文

我只是想PHP來連接改變DZ

我試圖

$ URL = HTTP://localhost/abc/index.php/ EN /新聞/標題/新版本的-goldendict與 - 不丹文

$ 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 /新聞/標題/ DZ瓦特-版本的-goldendict與 - 不丹文

任何一個誰有想法發生了什麼

+1

好舊''newurl = str_replace('/ en /','/ dz /',$ url);'這裏可能夠嗎? – Scuzzy

+1

爲什麼你需要替換一個語言字符串?您應該根據當前語言正確構建網址。包括現在似乎被固定到一種語言的標題。 – 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參數工作...謝謝@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/

相關問題