У меня есть этот массив в PHP:

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

Функция получает день со случайными форматами, такими как все прописные или заглавные буквы, я делаю strtolower из переменной и затем сравниваю ее с массивом.

Проблема возникает здесь, когда я делаю strtolower для переменной со специальным символом, подобным этому ø из søndag и lørdag, он не распознает строку. Как я могу изменить строку на strtolower без изменения специального символа?

1
Cristian Gonzalez 23 Мар 2017 в 16:37

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);
3
Mihai Matei 23 Мар 2017 в 13:49

... или если вы хотите проверить определенный элемент в массиве, вы можете просто запустить mb_strtolower ($ item, 'UTF-8') на нем.

$happyDay = "SøndAg";
echo $happyDay . ' -> ' . mb_strtolower($happyDay, 'UTF-8');
1
Carl-Martin Hellberg 23 Мар 2017 в 13:54