Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Работа со строками PHP-7 (кириллица) utf-8 [2]
Форумы портала PHP.SU » » Вопросы новичков » Работа со строками PHP-7 (кириллица) utf-8

Страниц (3): « 1 [2] 3 »
 

16. dikoobraz - 22 Апреля, 2018 - 00:14:48 - перейти к сообщению
Странно... Я заменил в php.ini строку mbstring.func_overload = 0 на mbstring.func_overload = 2, но все без изменений.....
17. Строитель - 22 Апреля, 2018 - 00:20:43 - перейти к сообщению
Мелкий пишет:
Эх, я не один раз читал мануал до тех пор пока начало получаться что-то работающее регулярно.
Не отпугивайте ТС Радость
Мелкий пишет:
А Джеффри Фридл шикарен, прочитать обязательно стоит, регулярки много где используются.
Полностью поддерживаю ваше мнение! )
(Добавление)
dikoobraz пишет:
но все без изменений.....
Видимо не в том php.ini сменили (их несколько бывает), но я бы вам посоветовал забыть об этом, и прислушаться к совету господина Мелкий.
18. Raziel - 22 Апреля, 2018 - 00:26:41 - перейти к сообщению
dikoobraz пишет:
Странно... Я заменил в php.ini строку mbstring.func_overload = 0 на mbstring.func_overload = 2, но все без изменений.....

php перезагрузили? листинг не работающего кода вложите
19. dikoobraz - 22 Апреля, 2018 - 00:42:10 - перейти к сообщению
Комп перезагрузил, как перезагрузить php не знаю...
20. Raziel - 22 Апреля, 2018 - 00:43:12 - перейти к сообщению
Он вместе с ним перезагрузился, выложите код который не работает.

echo php_ini_loaded_file(); - выводит путь к загруженному php.ini если он вообще загружен
21. dikoobraz - 22 Апреля, 2018 - 00:53:37 - перейти к сообщению
Код:
Спойлер (Отобразить)


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


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



/etc/php/7.0/apache2/php.ini
22. Raziel - 22 Апреля, 2018 - 00:56:00 - перейти к сообщению
А где в листинге line 90?
23. dikoobraz - 22 Апреля, 2018 - 00:59:22 - перейти к сообщению
Все остальное комментарии
line 90 это строка 13

$output .= $alfavit[$string[$i]];
(Добавление)
Похоже что mbstring не установлен..., а нет установлен, прошу прощения
24. Raziel - 22 Апреля, 2018 - 01:05:19 - перейти к сообщению
[$string[$i]] так с кириллицей делать нельзя в любом случае
25. dikoobraz - 22 Апреля, 2018 - 01:09:14 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. $word = "слово";
  2. echo $word[0];

Так тоже?

Я уже блин пожалел, что связался с PHP.
Ни в JS, ни в Python, ни в Ruby нет таких проблем с элементарными вещами
26. Строитель - 22 Апреля, 2018 - 01:15:12 - перейти к сообщению
dikoobraz, я же вам скидывал пару вариантов, как это делается для подобных задач... Зачем вам быдлокод? Можно написать и так:
PHP:
скопировать код в буфер обмена
  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.    
  10.     $output = '';
  11.     foreach(preg_split('~~u', $string, -1, PREG_SPLIT_NO_EMPTY) as $value){
  12.         $output .= $alfavit[$value];
  13.     }
  14.     return $output;
  15. }
  16.  
  17.  $str = "слово";
  18.  echo trans($str);
Только объясните мне, зачем писать 5 строк кода вместо одной? Не понял
27. dikoobraz - 22 Апреля, 2018 - 01:23:56 - перейти к сообщению
Да блин, почему у препода все работает без костылей, а у меня нет.
Этот пример ответа из домашнего задания.... Мое решение не такое, но тоже рабочее
28. Raziel - 22 Апреля, 2018 - 01:26:04 - перейти к сообщению
dikoobraz пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $word = "слово";
  2. echo $word[0];

Так тоже?

Я уже блин пожалел, что связался с PHP.
Ни в JS, ни в Python, ни в Ruby нет таких проблем с элементарными вещами


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


Но зачем?
29. dikoobraz - 22 Апреля, 2018 - 01:35:02 - перейти к сообщению
Это просто для примера, коротко и ясно определяет проблему
30. Raziel - 22 Апреля, 2018 - 01:40:52 - перейти к сообщению
Для PHP "слово" это массив из 10 символов, "slovo" массив из 5, если вам надо к примеру вывести букву "л" то
CODE (htmlphp):
скопировать код в буфер обмена
  1. echo $word[2] . $word[3];

Но думаю на деле так лучше не делать, просто чтобы понимать в чем проблема.
mb_string заменяет многие стандартные функции, но не учит php работать с многобайтовыми кодировками в целом.
конкретно в этом примере с транслитом самые простое думаю использовать пример строителя с strtr()

 

Powered by ExBB FM 1.0 RC1