2011-11-29 179 views
3

我需要在PHP中進行轉換,如ă -> a,â -> a,ț -> t等特殊字符。如何從字符中刪除口音? (只留下英文字母符號)

我特別需要這個鏈接,所以任何幫助,將不勝感激。

+3

「極品這個特別的鏈接」 < - 那豈不是更好只是爲了正確編碼URI? :) – 2011-11-29 18:30:03

+0

請參閱http://stackoverflow.com/questions/1770250/how-to-remove-diacritics-from-text http://stackoverflow.com/questions/3635511/remove-diacritics-from-a-string –

+0

否,因爲它會導致我的HTML字符,如s%21 –

回答

9

當我想要純文本(來自utf-8)時,我正在使用iconv

iconv('utf8', 'ascii//TRANSLIT', $text); 

如果只是爲了您的網址,urlencode可能是一個更好的主意。

+0

這工作,謝謝:('utf8','ascii // TRANSLIT',$ text);問候。 –

+1

我認爲iconv()是最好的解決方案。真正閱讀其文檔! – powtac

0

您可以使用此:

function clean_special_chars($s, $d=false) 
{ 
    if($d) $s = utf8_decode($s); 

    $chars = array(
    '_' => '/`|´|\^|~|¨|ª|º|©|®/', 
    'a' => '/à|á|â|ã|ä|å|æ/', 
    'e' => '/è|é|ê|ë/', 
    'i' => '/ì|í|î|ĩ|ï/', 
    'o' => '/ò|ó|ô|õ|ö|ø/', 
    'u' => '/ù|ú|û|ű|ü|ů/', 
    'A' => '/À|Á|Â|Ã|Ä|Å|Æ/', 
    'E' => '/È|É|Ê|Ë/', 
    'I' => '/Ì|Í|Î|Ĩ|Ï/', 
    'O' => '/Ò|Ó|Ô|Õ|Ö|Ø/', 
    'U' => '/Ù|Ú|Û|Ũ|Ü|Ů/', 
    'c' => '/ć|ĉ|ç/', 
    'C' => '/Ć|Ĉ|Ç/', 
    'n' => '/ñ/', 
    'N' => '/Ñ/', 
    'y' => '/ý|ŷ|ÿ/', 
    'Y' => '/Ý|Ŷ|Ÿ/' 
    ); 

return preg_replace($chars, array_keys($chars), $s); 
} 
3

更新從奧蘭多答案,我補充一些特殊的字符

function clean_special_chars ($s, $d=false) { 
if($d) $s = utf8_decode($s); 

$chars = array(
    '_' => '/`|´|\^|~|¨|ª|º|©|®/', 
    'a' => '/à|á|ả|ạ|ã|â|ầ|ấ|ẩ|ậ|ẫ|ă|ằ|ắ|ẳ|ặ|ẵ|ä|å|æ/', 
    'd' => '/đ/', 
    'e' => '/è|é|ẻ|ẹ|ẽ|ê|ề|ế|ể|ệ|ễ|ë/', 
    'i' => '/ì|í|ỉ|ị|ĩ|î|ï/', 
    'o' => '/ò|ó|ỏ|ọ|õ|ô|ồ|ố|ổ|ộ|ỗ|ö|ø/', 
    'u' => '/ù|ú|û|ũ|ü|ů|ủ|ụ|ư|ứ|ừ|ữ|ử|ự/', 
    'A' => '/À|Á|Ả|Ạ|Ã|Â|Ầ|Ấ|Ẩ|Ậ|Ẫ|Ă|Ằ|Ắ|Ẳ|Ặ|Ẵ|Ä|Å|Æ/', 
    'D' => '/Đ/', 
    'E' => '/È|É|Ẻ|Ẹ|Ẽ|Ê|Ề|Ế|Ể|Ệ|Ễ|Ê|Ë/', 
    'I' => '/Ì|Í|Ỉ|Ị|Ĩ|Î|Ï/', 
    'O' => '/Ò|Ó|Ỏ|Ọ|Õ|Ô|Ồ|Ố|Ổ|Ộ|Ỗ|Ö|Ø/', 
    'U' => '/Ù|Ú|Û|Ũ|Ü|Ů|Ủ|Ụ|Ư|Ứ|Ừ|Ữ|Ử|Ự/', 
    'c' => '/ć|ĉ|ç/', 
    'C' => '/Ć|Ĉ|Ç/', 
    'n' => '/ñ/', 
    'N' => '/Ñ/', 
    'y' => '/ý|ỳ|ỷ|ỵ|ỹ|ŷ|ÿ/', 
    'Y' => '/Ý|Ỳ|Ỷ|Ỵ|Ỹ|Ŷ|Ÿ/' 
); 

return preg_replace($chars, array_keys($chars), $s); 
} 
相關問題