PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 14
dikoobraz Отправлено: 22 Апреля, 2018 - 11:13:45 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Мелкий
Цитата:
Значит у него не многобайтовая кодировка. А cp1251 какой-нибудь или ещё что однобайтовое
.

А вот этого я не учел....

Всем огромное спасибо за помощь, не ожидал что здесь такие отзывчивые люди... Улыбка
dikoobraz Отправлено: 22 Апреля, 2018 - 01:35:02 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Это просто для примера, коротко и ясно определяет проблему
dikoobraz Отправлено: 22 Апреля, 2018 - 01:23:56 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Да блин, почему у препода все работает без костылей, а у меня нет.
Этот пример ответа из домашнего задания.... Мое решение не такое, но тоже рабочее
dikoobraz Отправлено: 22 Апреля, 2018 - 01:09:14 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
CODE (htmlphp):
скопировать код в буфер обмена
  1. $word = "слово";
  2. echo $word[0];

Так тоже?

Я уже блин пожалел, что связался с PHP.
Ни в JS, ни в Python, ни в Ruby нет таких проблем с элементарными вещами
dikoobraz Отправлено: 22 Апреля, 2018 - 00:59:22 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Все остальное комментарии
line 90 это строка 13

$output .= $alfavit[$string[$i]];
(Добавление)
Похоже что mbstring не установлен..., а нет установлен, прошу прощения
dikoobraz Отправлено: 22 Апреля, 2018 - 00:53:37 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Код:
Спойлер (Отобразить)


Ошибки:
Спойлер (Отобразить)


phpinfo(); показывает mbstring.func_overload = 2



/etc/php/7.0/apache2/php.ini
dikoobraz Отправлено: 22 Апреля, 2018 - 00:42:10 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Комп перезагрузил, как перезагрузить php не знаю...
dikoobraz Отправлено: 22 Апреля, 2018 - 00:14:48 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Странно... Я заменил в php.ini строку mbstring.func_overload = 0 на mbstring.func_overload = 2, но все без изменений.....
dikoobraz Отправлено: 21 Апреля, 2018 - 23:42:34 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
С регулярками у меня плохи дела... Огорчение пока
dikoobraz Отправлено: 21 Апреля, 2018 - 23:37:22 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Строитель Спасибо за функцию strtr().... не знал Радость
(Добавление)
Raziel Спасибо, сейчас буду пробовать настроить
dikoobraz Отправлено: 21 Апреля, 2018 - 23:30:54 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Я очень хочу, что бы замена была автоматической....
Подскажите как настроить такую автоматическую замену... и будет ли она работать на хосте у провайдера... тоже вопрос....
dikoobraz Отправлено: 21 Апреля, 2018 - 23:14:54 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Мелкий пишет:
$word[0] - обращение побайтовое, о чем есть предупреждение в мануале.
strlen, как и большинство старых строковых функций - аналогично работают с байтами, а не символами. И об этом варнинги тоже были понаписаны.

Для работы с мультибайтовыми кодировками есть функции mb_ http://php.net/manual/en/book.mbstring.php

От настроек окружения не зависит. Разве только упомянуть уже deprecated гайку mbstring.func_overload


Спасибо за ответ... но зачем же столько агрессии, я ведь только учусь...
deprecated гайку mbstring.func_overload - я не понимаю о чем речь. Можете объяснить подробнее
По-моему в PHP-5.6 таких проблем не наблюдалось
(Добавление)
Строитель пишет:
dikoobraz, для кириллицы нужно как-то так:

PHP:
скопировать код в буфер обмена
  1. $word = "Слово";
  2.  
  3. $word = preg_split('~~u', $word, -1, PREG_SPLIT_NO_EMPTY);
  4.  
  5. echo $word[0]; // С


Хорошо, а что делать с примером посложнее...

CODE (htmlphp):
скопировать код в буфер обмена
  1. function trans($string){
  2.   $alfavit = array('а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd',
  3.                     'е' => 'e', 'ж' => 'g', 'з' => 'z', 'и' => 'i', 'й' => 'y',
  4.                      'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o',
  5.                      'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u',
  6.                      'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh',
  7.                      'щ' => 'sc', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', ' ' => ' ');
  8.  
  9.   $output = '';
  10.   for($i = 0; $i < strlen($string); $i++){
  11.    $output .= $alfavit[$string[$i]];
  12.  }
  13.  return $output;
  14. }
  15.  
  16. $str = "слово";
  17. echo trans($str);
dikoobraz Отправлено: 21 Апреля, 2018 - 23:11:02 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Raziel пишет:
mbstring подключили?

Нет не подключал, подскажите пожалуйста как это сделать?
Это проблема только PHP-7?
dikoobraz Отправлено: 21 Апреля, 2018 - 22:28:45 • Тема: Работа со строками PHP-7 (кириллица) utf-8 • Форум: Вопросы новичков

Ответов: 31
Просмотров: 1378
Всем привет! Я только начал изучать PHP. Установил локально, у себя на машине (ubuntu 16.04) LAMP - Apache2, PHP-7, mysql, phpmyadmin. Все вроде работает, кириллица отображается правильно.... HO! Я уже второй день бьюсь с такой проблемой....

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $word = "слово";
  3. echo $word[0];
  4. echo $word;
  5.  


На выходе получаю следующий результат..

...�
...слово

Соответственно strlen($string) - тоже не правильно работает. И все действия (функции) со строками в кириллице приводит к такому результату... Такие "ромбики" выдает интерпретатор в Atom, Sublime, VS-Code, phpStorm ну и веб-страница соответственно.

Кодировка файла проверенно неоднократо! UTF-8 без BOM
Добавил в .htaccess - AddDefaultCharset UTF-8
В сам файл test.php - header('Content-Type: text/html; charset=utf-8');

Проверил все файлы php.ini и apache2 - везде стоит default_charset UTF-8 Ничего не помогает!
Отчаянно прошу помощи! Как правильно настроить кодировку рабочего окружения для PHP....

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB