2010-12-08 46 views
7

我需要能夠用我的數據庫存儲值之前,用英語等值替換一些常見的外國字符。替換外來字符

例如:æ替換AEñÑ

我是否使用preg_replace?

感謝

+1

這被稱爲[音譯](http://en.wikipedia.org/wiki/Transliteration)。 – Gumbo 2010-12-08 16:08:19

回答

4

您可以在一個數組定義可轉換角色,並使用str_replace()

$conversions = array(
    "æ" => "ae", 
    "ñ" => "n", 
); 

$text = str_replace(array_keys($conversions), $conversions, $text); 
4

你可以嘗試iconv()ASCII//TRANSLIT

$text = iconv("UTF-8", "ASCII//TRANSLIT", $text); 
+0

不適用於'æ`到ae – ajreal 2010-12-08 15:59:28

+0

@ajrael:這會將'æ'轉換爲'ae',至少在我剛剛嘗試時會這樣做。 http://ideone.com/tBewx - 你可以舉一個具體的例子來說明它不起作用嗎? – 2010-12-15 22:46:14

6

口音

的單個字符
$str = strtr($str, 
    "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÝßàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ", 
    "AAAAAACEEEEIIIINOOOOOOYSaaaaaaceeeeiiiinoooooouuuuyy"); 

口音的double character(如Æ, æ

$match = array('æ', 'Æ'); 
$replace = array('ae', 'AE'); 
$str = str_replace($replace, $replace, $str); 
2

原諒我的猜測,爲什麼你這樣做,但..

如果這是搜索匹配:一個字符的點在MySQL中設置排序規則(例如),你可以搜索「n」並且仍然匹配「 - 」如果這是用於顯示的目的:如果你必須這樣做,你可以這樣做當你向用戶顯示文本時。否則,您永遠無法獲得原始數據。