2012-12-24 40 views
0

我寫了一個簡單的函數來替換非ASCII的土耳其字符。選擇和替換非ASCII字符

function url_cevir($yazi) { 
     $yazi = trim($yazi); 

     $eski = array('ü','Ü','ö','Ö','ş','Ş','ç','Ç','ı','İ','ğ','Ğ',' '); 
     $yeni = array('%C3%BC','%C3%9C','%C3%B6','%C3%96','%C5%9F','%C5%9E','%C3%A7','%C3%87','%C4%B1','%C4%B0','%C4%9F','%C4%9E','%20'); 


     return str_replace($eski,$yeni,$yazi); 
    } 

它正好工作,當我在我稱之爲頁面中定義它。但它只是在我將它與外部頁面一起包含時替換空格。

所有的代碼在這裏並沒有其他的代碼從外部頁面污染這些

<?php 

include('functions/array_and_string_fns.php'); 


echo url_cevir('ısı geçişi'); 
?>  

如果我echo url_cevir('ısı geçişi');使用它打印ısı%20geçişi
如果我使用echo ('ısı geçişi');它打印ısı geçişi如我們所料。
所以我認爲問題來自函數url_cevir 而我想我錯過了一些非常簡單的東西。別的,這是一個非常有趣的問題。

+0

我不明白這個問題。如果您不希望函數將空格編碼爲'%20',請從函數中的數組中刪除該部分。 –

+0

它必須用$ yeni =字符替換所有$ eski =字符。但是當我包含這個函數時它只會替換空格。 – Tahtakafa

回答

1

當您將文字字符放入源文件時,實際源文件的編碼變得很重要。

我認爲你的源文件有不同的編碼。檢查文本編輯器的設置。

+0

你說得對。問題是文本編輯器的字符設置。 – Tahtakafa