2013-10-25 128 views
2

我想以英文字母來代替句子中的每一個土耳其語字母替換土耳其的信件,我嘗試以下功能:以英文字母

$title_result = "Türkiye'nin en iyi oranlari ile Lider Bahis Sitesi"; 
$turkish = array("ı", "ğ", "ü", "ş", "ö", "ç");//turkish letters 
$english = array("i", "g", "u", "s", "o", "c");//english cooridinators letters 

$final_title = str_replace($turkish, $english, $title_result);//replace php function 
print_r($turkish);//when printing this i got: Array ([0] => ı [1] => ğ [2] => ü [3] => ş [4] => ö [5] => ç) 
return $final_title; 

我認爲這個問題在土耳其字符,但我不知道我怎麼可以讓PHP正確讀取這些字符來正確地進行替換。我需要你的建議嗎?

+0

你的代碼工作以及我的機器上的名單可能有一些問題與您的配置 - 檢查MBSTRING:HTTP:// PHP。 net/manual/en/book.mbstring.php – k102

+0

由於str_replace不能正常顯示或打印,所以它沒有任何值 – Basel

+0

請參閱php info for mbstring ('php -i | grep mbstring'在linux終端)。它肩膀被啓用,因爲我猜土耳其人可以存儲在兩個字節而不是一個 – k102

回答

3

你有沒有注意到,你打印$turkish,而不是替換字符串(即$final_title)?你看到一個數組,因爲你正在打印數組。如果您在瀏覽器上單獨打印陣列,則可能會看到這些亂碼字符,可能是因爲輸出不是UTF-8編碼。但是,如果您這樣做(請注意元標記):

<meta charset="utf-8" /> 
<?php 
$title_result = "Türkiye'nin en iyi oranlari ile Lider Bahis Sitesi"; 
$turkish = array("ı", "ğ", "ü", "ş", "ö", "ç");//turkish letters 
$english = array("i", "g", "u", "s", "o", "c");//english cooridinators letters 

$final_title = str_replace($turkish, $english, $title_result);//replace php function 
print_r($turkish); 

您將看到正確的字符。但這不是問題。 str_replace()工作正常。它應該工作正常。

+0

我在我的頭文件中使用拉丁-1作爲acharset,因爲UTF8無法打印出我的瀏覽器中的土耳其字符。我的問題是,str_replace不做替換,舊的字符串和新的字符串是相同的 – Basel

+0

但在'$ title_result'沒有土耳其字符!所以'str_replace'與這個字符串無關。 – k102

+0

這段代碼是什麼文件的字符編碼?嘗試將其更改爲不使用BOM或UTF-8的UTF-8。它工作嗎? (但要小心,因爲這可能會弄亂你的文件,在做任何事之前做一個備份。我做Ctrl + A,Ctrl + X,改變編碼,記事本++上的Ctrl + V)。編碼是我沒有掌握的技巧。 – Parziphal

2

什麼隆重的信, 我的解決辦法是:

function url_make($str){ 
    $before = array('ı', 'ğ', 'ü', 'ş', 'ö', 'ç', 'İ', 'Ğ', 'Ü', 'Ö', 'Ç'); // , '\'', '""' 
    $after = array('i', 'g', 'u', 's', 'o', 'c', 'i', 'g', 'u', 'o', 'c'); // , '', '' 

    $clean = str_replace($before, $after, $str); 
    $clean = preg_replace('/[^a-zA-Z0-9 ]/', '', $clean); 
    $clean = preg_replace('!\s+!', '-', $clean); 
    $clean = strtolower(trim($clean, '-')); 

return $clean; 
} 

echo url_make('Bu Çocuğu Kim İşe Aldı'); // bu-cocugu-kim-ise-aldi 
echo url_make('Birisi"nin adı'); // birisinin-adi 
echo url_make("I'll make all happen"); // ill-make-all-happen 

要產生不良化妝所有發生的,而不是虐待化妝全發生,只是加上「\」「和」 「。」之前的$列表中,並添加‘’和‘’到後