PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: Ошибка при работе с кириллическими строками в кодировке utf-8
Поиск в теме | Версия для печати
Строитель
Отправлено: 22 Апреля, 2018 - 00:20:43
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014
Откуда: Украина
Помог: 73 раз(а)
Мелкий пишет: Эх, я не один раз читал мануал до тех пор пока начало получаться что-то работающее регулярно.
Не отпугивайте ТС
Мелкий пишет: А Джеффри Фридл шикарен, прочитать обязательно стоит, регулярки много где используются.
Полностью поддерживаю ваше мнение! )
(Добавление)
dikoobraz пишет: но все без изменений.....
Видимо не в том php.ini сменили
(их несколько бывает) , но я бы вам посоветовал забыть об этом, и прислушаться к совету господина Мелкий.
Raziel
Отправлено: 22 Апреля, 2018 - 00:26:41
Новичок
Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2018
Помог: 0 раз(а)
dikoobraz пишет: Странно... Я заменил в php.ini строку mbstring.func_overload = 0 на mbstring.func_overload = 2 , но все без изменений.....
php перезагрузили? листинг не работающего кода вложите
Raziel
Отправлено: 22 Апреля, 2018 - 00:43:12
Новичок
Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2018
Помог: 0 раз(а)
Он вместе с ним перезагрузился, выложите код который не работает.
echo php_ini_loaded_file(); - выводит путь к загруженному php.ini если он вообще загружен
(Отредактировано автором: 22 Апреля, 2018 - 00:53:16)
dikoobraz
Отправлено: 22 Апреля, 2018 - 00:53:37
Новичок
Покинул форум
Сообщений всего: 14
Дата рег-ции: Апр. 2018
Помог: 0 раз(а)
Код:
Спойлер (Отобразить ) CODE (
htmlphp ):
скопировать код в буфер обмена
<? php
header ( 'Content-Type: text/html; charset=utf-8' ) ; function trans( $string ) {
$alfavit = array ( 'а' => 'a' , 'б' => 'b' , 'в' => 'v' , 'г' => 'g' , 'д' => 'd' , 'е' => 'e' , 'ж' => 'g' , 'з' => 'z' , 'и' => 'i' , 'й' => 'y' ,
'к' => 'k' , 'л' => 'l' , 'м' => 'm' , 'н' => 'n' , 'о' => 'o' ,
'п' => 'p' , 'р' => 'r' , 'с' => 's' , 'т' => 't' , 'у' => 'u' ,
'ф' => 'f' , 'х' => 'h' , 'ц' => 'c' , 'ч' => 'ch' , 'ш' => 'sh' ,
'щ' => 'sc' , 'э' => 'e' , 'ю' => 'yu' , 'я' => 'ya' , ' ' => ' ' ) ;
$output = '' ;
for ( $i = 0 ; $i < strlen ( $string ) ; $i ++ ) { $output .= $alfavit [ $string [ $i ] ] ;
}
return $output ;
}
$str = "слово" ;
echo trans( $str ) ;
Ошибки:
Спойлер (Отобразить ) Notice: Undefined index: � in /home/dikoo/www/test.site/test.p hp on line 90
Notice: Undefined index: � in /home/dikoo/www/test.site/test.p hp on line 90
Notice: Undefined index: � in /home/dikoo/www/test.site/test.p hp on line 90
Notice: Undefined index: � in /home/dikoo/www/test.site/test.p hp on line 90
Notice: Undefined index: � in /home/dikoo/www/test.site/test.p hp on line 90
phpinfo(); показывает mbstring.func_overload = 2
/etc/php/7.0/apache2/php.ini (Отредактировано автором: 22 Апреля, 2018 - 00:55:30)
dikoobraz
Отправлено: 22 Апреля, 2018 - 00:59:22
Новичок
Покинул форум
Сообщений всего: 14
Дата рег-ции: Апр. 2018
Помог: 0 раз(а)
Все остальное комментарии
line 90 это строка 13
$output .= $alfavit[$string[$i]];
(Добавление)
Похоже что mbstring не установлен..., а нет установлен, прошу прощения
(Отредактировано автором: 22 Апреля, 2018 - 01:06:22)
Строитель
Отправлено: 22 Апреля, 2018 - 01:15:12
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014
Откуда: Украина
Помог: 73 раз(а)
dikoobraz , я же вам скидывал пару вариантов, как это делается для подобных задач... Зачем вам быдлокод? Можно написать и так:
PHP:
скопировать код в буфер обмена
function trans( $string ) {
$alfavit = array ( 'а' => 'a' , 'б' => 'b' , 'в' => 'v' , 'г' => 'g' , 'д' => 'd' , 'е' => 'e' , 'ж' => 'g' , 'з' => 'z' , 'и' => 'i' , 'й' => 'y' ,
'к' => 'k' , 'л' => 'l' , 'м' => 'm' , 'н' => 'n' , 'о' => 'o' ,
'п' => 'p' , 'р' => 'r' , 'с' => 's' , 'т' => 't' , 'у' => 'u' ,
'ф' => 'f' , 'х' => 'h' , 'ц' => 'c' , 'ч' => 'ch' , 'ш' => 'sh' ,
'щ' => 'sc' , 'э' => 'e' , 'ю' => 'yu' , 'я' => 'ya'
) ;
$output = '' ;
foreach ( preg_split ( '~~u' , $string , - 1
, PREG_SPLIT_NO_EMPTY
) as $value ) { $output .= $alfavit [ $value ] ;
}
return $output ;
}
$str = "слово" ;
echo trans( $str ) ;
Только объясните мне, зачем писать 5 строк кода вместо одной?
Raziel
Отправлено: 22 Апреля, 2018 - 01:26:04
Новичок
Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2018
Помог: 0 раз(а)
dikoobraz пишет:
Так тоже?
Я уже блин пожалел, что связался с PHP.
Ни в JS, ни в Python, ни в Ruby нет таких проблем с элементарными вещами
Вместо этого можно
Но зачем?
Поиск в теме | Версия для печати
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB