выводит кракозябры. Где я ошибся? PHP: function aabbrr($abr){ $abr = (string)$abr;// преобразуем в строковое значение $abr = strip_tags($abr);// убираем HTML-теги $abr = str_replace(array("\n", "\r"), " ", $abr);// убираем перевод каретки $abr = trim($abr);// убираем пробелы в начале и конце строки $abr = preg_replace("/\s+/", ' ', $abr);// удаляем повторяющие пробелы $abr = explode(" ", $abr);//Разбиваем строку с помощью разделителя (пробел) for ($i = 0; $i < count($abr); ++$i) { $abr[$i] = substr($abr[$i],0,1);//обрежем слова до первой буквы } $abr = implode("", $abr);//объединяем массив в строку return $abr; // возвращаем результат }
Всем спасибо, решил сам. заменил Код (Text): $abr[$i] = substr($abr[$i],0,1); на Код (Text): $abr[$i] = mb_substr($abr[$i],0,1,'UTF-8');
Доработал код: Код (Text): <?php $text1 = 'Муниципальное казенное учреждение'; $text2 = 'Комплексный центр по обслуживанию муниципальной системы образования'; function abr($abr){ $abr = (string)$abr;//преобразуем в строковое значение $abr = strip_tags($abr);//убираем HTML-теги $abr = str_replace(array("\n", "\r"), " ", $abr);//убираем перевод каретки $abr = trim($abr);//убираем пробелы в начале и конце строки $abr = preg_replace("/\s+/", ' ', $abr);//удаляем повторяющие пробелы $abr = explode(" ", $abr);//Разбиваем строку с помощью разделителя (пробел) for ($i = 0; $i < count($abr); ++$i) { if(mb_strlen($abr[$i], 'utf-8') < '4'){ unset($abr[$i]); //удалим элемент короче 4 символов } $abr[$i] = mb_substr($abr[$i],0,1,'UTF-8');//обрежем слова до первой буквы } $abr = implode("", $abr);//объединяем массив в строку $abr = mb_strtoupper($abr, 'UTF-8');//переведем все в верхний регистр return $abr;//возвращаем результат } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Тест функции abr</title> </head> <body> <h3><?php echo abr($text1).' '.abr($text2);?></h3> </body> </html> Вывод: МКУ КЦОМСО