За последние 24 часа нас посетили 17670 программистов и 1715 роботов. Сейчас ищут 1894 программиста ...

Проблема с кодировкой в функции для генерации аббревиатур

Тема в разделе "Вопросы от блондинок", создана пользователем teanrus, 11 июн 2019.

Метки:
  1. teanrus

    teanrus Новичок

    С нами с:
    11 июн 2019
    Сообщения:
    6
    Симпатии:
    0
    выводит кракозябры. Где я ошибся?
    PHP:
    1. function aabbrr($abr){
    2. $abr = (string)$abr;// преобразуем в строковое значение
    3. $abr = strip_tags($abr);// убираем HTML-теги
    4. $abr = str_replace(array("\n", "\r"), " ", $abr);// убираем перевод каретки
    5. $abr = trim($abr);// убираем пробелы в начале и конце строки
    6. $abr = preg_replace("/\s+/", ' ', $abr);// удаляем повторяющие пробелы
    7. $abr = explode(" ", $abr);//Разбиваем строку с помощью разделителя (пробел)
    8. for ($i = 0; $i < count($abr); ++$i) {
    9. $abr[$i] = substr($abr[$i],0,1);//обрежем слова до первой буквы
    10. }
    11. $abr = implode("", $abr);//объединяем массив в строку
    12. return $abr; // возвращаем результат
    13. }
     
    #1 teanrus, 11 июн 2019
    Последнее редактирование модератором: 11 июн 2019
  2. teanrus

    teanrus Новичок

    С нами с:
    11 июн 2019
    Сообщения:
    6
    Симпатии:
    0
    Всем спасибо, решил сам.
    заменил
    Код (Text):
    1. $abr[$i] = substr($abr[$i],0,1);
    на
    Код (Text):
    1. $abr[$i] = mb_substr($abr[$i],0,1,'UTF-8');
     
  3. teanrus

    teanrus Новичок

    С нами с:
    11 июн 2019
    Сообщения:
    6
    Симпатии:
    0
    Доработал код:

    Код (Text):
    1. <?php
    2. $text1 = 'Муниципальное казенное учреждение';
    3. $text2 = 'Комплексный центр по обслуживанию муниципальной системы образования';
    4. function abr($abr){
    5. $abr = (string)$abr;//преобразуем в строковое значение
    6. $abr = strip_tags($abr);//убираем HTML-теги
    7. $abr = str_replace(array("\n", "\r"), " ", $abr);//убираем перевод каретки
    8. $abr = trim($abr);//убираем пробелы в начале и конце строки
    9. $abr = preg_replace("/\s+/", ' ', $abr);//удаляем повторяющие пробелы
    10. $abr = explode(" ", $abr);//Разбиваем строку с помощью разделителя (пробел)
    11. for ($i = 0; $i < count($abr); ++$i) {
    12.     if(mb_strlen($abr[$i], 'utf-8') < '4'){
    13.         unset($abr[$i]); //удалим элемент короче 4 символов
    14.     }
    15.     $abr[$i] = mb_substr($abr[$i],0,1,'UTF-8');//обрежем слова до первой буквы
    16. }
    17. $abr = implode("", $abr);//объединяем массив в строку
    18. $abr = mb_strtoupper($abr, 'UTF-8');//переведем все в верхний регистр
    19. return $abr;//возвращаем результат
    20. }
    21. ?>
    22. <!DOCTYPE html>
    23. <html lang="en">
    24. <head>
    25.     <meta charset="UTF-8">
    26.     <title>Тест функции abr</title>
    27. </head>
    28. <body>
    29.     <h3><?php echo abr($text1).' '.abr($text2);?></h3>
    30. </body>
    31. </html>
    Вывод: МКУ КЦОМСО