2017-03-23 65 views
1

我在PHP數組:如何用特殊字符小寫字符串?

$weekdays = array(
"mandag" => 1, 
"tirsdag" => 2, 
"onsdag" => 3, 
"torsdag" => 4, 
"fredag" => 5, 
"lørdag" => 6, 
"søndag" => 7); 

的功能得到新的一天,隨機格式,如全部大寫或一個字母大寫,我做從變量的strtolower,然後將其與陣列比較。

問題就來了這裏,當我做strtolower的變種,像這樣一個øsøndaglørdag一個特殊字符,它不能識別的字符串。如何在不修改特殊字符的情況下將字符串更改爲strtolower

回答

2

嘗試mb_strtolower

$weekdays = array("Mandag" => 1, "Tirsdag" => 2, "Onsdag" => 3, "Torsdag" => 4, "Fredag" => 5, "Lørdag" => 6, "Søndag" => 7); 

$weekdays = array_combine(
    array_map('mb_strtolower', array_keys($weekdays)), 
    $weekdays 
); 

var_dump($weekdays); 
+0

對我很好,如果我使用mb_strtolower($ str,'UTF-8');謝謝! –

+1

@CristianGonzalez:請注意,您也可以使用['mb_internal_encoding'](http://php.net/manual/en/function.mb-internal-encoding.php)一次性爲所有人設置mb_函數的默認編碼。這樣你就不必把第二個參數放在'mb_strtolower'中。 –

1

...或者,如果你想在陣列中檢查的具體項目,你可以簡單地在其上運行mb_strtolower($項目, 'UTF-8')。

$happyDay = "SøndAg"; 
echo $happyDay . ' -> ' . mb_strtolower($happyDay, 'UTF-8');