Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Простенький вопрос по PHP

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Открыть новую тему     Написать ответ в эту тему

Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZhekaVorobey182

Цитата:
Может  я тупой .  Но странно .  В  Visual Basic \ DElphi  это  Рядовая  функция .  Здесь  надо бить в  бубен что бы длинну строки узнать .  
 

не нужно. все от рук зависит. либо нужно указывать путь к php.ini, либо бросить в ту же папку, где php.exe
это больше для выполнения на сервере, который уже настроен, а не вот так.
php -i
покажет конфиг и откуда читает php.ini
 
 
стандартная функция strlen, но она возвращает количество байт, поэтому с уникодом не очень. для этого и нужна отдельная библиотека mbstring

Всего записей: 15183 | Зарегистр. 20-09-2014 | Отправлено: 12:03 27-01-2024 | Исправлено: Mavrikii, 12:04 27-01-2024
ZhekaVorobey182



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Вот  положил php.ini рядом  с  php.exe
 
#
 

Всего записей: 231 | Зарегистр. 27-02-2022 | Отправлено: 12:24 27-01-2024 | Исправлено: ZhekaVorobey182, 12:27 27-01-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZhekaVorobey182

Цитата:
Вот  положил php.ini рядом  с  php.exe
 

и что? не подключается mbstring? смотреть вывод php -i
что и откуда грузит, загружен ли mbstring

Всего записей: 15183 | Зарегистр. 20-09-2014 | Отправлено: 12:30 27-01-2024
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Странная ситуация с функцией nl2br.
 
Вот форма отправки сообщений:
<form method="POST" action="storage.php">
<textarea name="praise_me" placeholder="Введите текст" autofocus></textarea>  
<input type="submit" value="Сохранить">
</form>
 
В обработчике использую код:
$text_with_br = nl2br($praise_me, true);
echo "<br>|$text_with_br|<br>";
 
В браузере (а позже и в базе, куда в конце концов записывается результат), вот такое сообщение:
|2\r\n3\r\n4\r\n|
Соответствующее введению
2
3
4
 
РНР версии 8.2.
 
Непонятно, почему так?

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 13:43 27-01-2024 | Исправлено: Vladsvn, 13:44 27-01-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
Уверены, что код именно такой и нигде не путаете переменные?
 

Цитата:
В браузере (а позже и в базе, куда в конце концов записывается результат), вот такое сообщение

именно такое - вряд ли, потому что символы переноса строки не отображаются как вы указали. если они явно записаны как \r\n, то значит где то ранее произошла замена этих кодов на такую запись.

Всего записей: 15183 | Зарегистр. 20-09-2014 | Отправлено: 17:10 27-01-2024 | Исправлено: Mavrikii, 05:03 28-01-2024
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробовал воспользоваться заменой. Вот так:
$text_with_br = str_replace(["\r\n", "\r", "\n"], "<br />", $praise_me);
И это не помогло - замена не произошла, str_replace не сработала!
 
А вот так помогло:
$text_with_br = str_replace(['\r\n', '\r', '\n'], "<br />", $praise_me);
 
Получается, что проблема решена, но как-то криво, и это не нравится. Не пойму, куда копать, где искать ее корень?

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 12:54 28-01-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
Код весь покажите. У вас что то и где то меняет символы переноса на эти наборы.

Всего записей: 15183 | Зарегистр. 20-09-2014 | Отправлено: 14:13 28-01-2024
ZhekaVorobey182



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
del

Всего записей: 231 | Зарегистр. 27-02-2022 | Отправлено: 14:18 02-02-2024 | Исправлено: ZhekaVorobey182, 15:11 02-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZhekaVorobey182

Цитата:
Так  и неробит


Цитата:
 mb_strроs

Выделенное набрано в другой раскладке

Всего записей: 15183 | Зарегистр. 20-09-2014 | Отправлено: 15:02 02-02-2024 | Исправлено: Mavrikii, 15:04 02-02-2024
ZhekaVorobey182



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
ААА .  Я копировал из PDF  примеры . Все с  глюками .
 
А как  заставить  правильно echo  выводить  кириллицу в  командное окно  ???

Всего записей: 231 | Зарегистр. 27-02-2022 | Отправлено: 15:12 02-02-2024 | Исправлено: ZhekaVorobey182, 15:15 02-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZhekaVorobey182
Это проблема кодовой страницы консоли в Windows, не php.
Если вывод уникода, то сначала  
chcp 65001
в самой консоли.

Всего записей: 15183 | Зарегистр. 20-09-2014 | Отправлено: 15:30 02-02-2024
ZhekaVorobey182



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 

Цитата:
chcp 65001  
D:\WWW\php\php.exe D:\WWW\project\example\fun.php  
timeout 20

Так  неканает
=====
А в php  как в Delphi  нельза  обратиться к строке  как  к массиву ??
 
$str_l="Привет мир";
echo $str_l;
echo $str_l[4];
 

Всего записей: 231 | Зарегистр. 27-02-2022 | Отправлено: 19:04 02-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZhekaVorobey182

Цитата:
Так  неканает

я не телепат. показать код, показать результат.
 

Цитата:
А в php  как в Delphi  нельза  обратиться к строке  как  к массиву ??
 

можно. но, опять же, если строка в уникоде, то в массиве будет больше байт.

Код:
echo strlen($str_l) . "\n";
echo mb_strlen($str_l);

 
результат

Цитата:
19
10

 
поэтому mb_substr для получения части строки.
 
ps: чтобы было понятнее, что выбирается когда побайтово
 

Всего записей: 15183 | Зарегистр. 20-09-2014 | Отправлено: 22:12 02-02-2024 | Исправлено: Mavrikii, 22:28 02-02-2024
ZhekaVorobey182



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
я не телепат. показать код, показать результат.  

ВЫзов

Код:
chcp 65001
D:\WWW\php\php.exe D:\WWW\project\example\fun.php  
timeout 20
 

И вывод
https://prnt.sc/-54iYU1PW7jN
====
Добавлено:
Я так  понял PHP язык  неочевидного даже в  мелочах
Работает  но  перевода строки нет
ECHO 'YES (2 == 2)\n';
Так  все  ОК  
ECHO "YES (2 == 2)\n";
====
А  зачем  все  эти  костыли реализованные в  php_mbstring.dll   ???????
Если  все строки не проще ли хранить в  Unicode ?????
 

Код:
$str_hw="Hello word Вася"."\n";
echo $str_hw;
for ($i=0;$i<mb_strlen($str_hw);$i++) echo mb_substr($str_hw,$i,1);

 
 
 

Всего записей: 231 | Зарегистр. 27-02-2022 | Отправлено: 15:50 03-02-2024 | Исправлено: ZhekaVorobey182, 16:12 03-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZhekaVorobey182

Цитата:
А  зачем  все  эти  костыли реализованные в  php_mbstring.dll   ???????
Если  все строки не проще ли хранить в  Unicode ?????

язык изначально не поддерживал уникод, его пытались сделать таким в 6й версии, но забросили.
он больше для работы с вебом, а не консолью.
 

Цитата:
Я так  понял PHP язык  неочевидного даже в  мелочах
Работает  но  перевода строки нет

так сделано во многих языках - в одинарных кавычках спецсимволы не обрабатываются, как и вставка значения переменных в php.
$var = 'test';
echo "$var\n";
echo '$var\n';
выдаст разное.
 

Цитата:
И вывод

а точно содержимое .php файла в уникоде? какая ОС вообще? в 10 нет никаких проблем, когда в уникоде, не нужны преобразования кодовой страницы.
 

Всего записей: 15183 | Зарегистр. 20-09-2014 | Отправлено: 21:34 03-02-2024
ZhekaVorobey182



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
а точно содержимое .php файла в уникоде? какая ОС вообще? в 10 нет никаких проблем, когда в уникоде, не нужны преобразования кодовой страницы.
 

Файл в кодировке  UTF-8 .  OS : Window

Цитата:
 
язык изначально не поддерживал уникод, его пытались сделать таким в 6й версии, но забросили.
он больше для работы с вебом, а не консолью.  

Я пока был в  анабиозе  что то  пропустил .  Тем более что для работы с Веб должеш поддерживать юникод без костылей .  
 
 

Всего записей: 231 | Зарегистр. 27-02-2022 | Отправлено: 17:53 04-02-2024 | Исправлено: ZhekaVorobey182, 17:55 04-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZhekaVorobey182

Цитата:
Тем более что для работы с Веб должеш поддерживать юникод без костылей  

на момент разработки языка - не должен.
 

Цитата:
OS : Window

это очевидно - версия?
ну и что говорит chcp о кодовой странице по умолчанию?

Всего записей: 15183 | Зарегистр. 20-09-2014 | Отправлено: 17:55 04-02-2024
ZhekaVorobey182



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
это очевидно - версия?
ну и что говорит chcp о кодовой странице по умолчанию?

Ой .  Windows 7  
Текущая кодовая страница: 866

Всего записей: 231 | Зарегистр. 27-02-2022 | Отправлено: 19:00 04-02-2024 | Исправлено: ZhekaVorobey182, 19:01 04-02-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZhekaVorobey182

Цитата:
Текущая кодовая страница: 866

ну вот в этом и особенность, что в cp866 не отображается нужный вариант русского языка (866 - это кириллица для DOS).
https://superuser.com/questions/269818/change-default-code-page-of-windows-console-to-utf-8
в принципе, переключение кодовой страницы, как написал выше, должно помочь.  
если только содержимое .php файла, все же, не в чистом уникоде.

Всего записей: 15183 | Зарегистр. 20-09-2014 | Отправлено: 19:03 04-02-2024 | Исправлено: Mavrikii, 19:04 04-02-2024
ZhekaVorobey182



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот  кодировка в тексте  
https://prnt.sc/hwiCM364cLEZ
 
В реестре поменял
C:\Users\John>chcp
Active code page: 65001
 
Не канает (((

Всего записей: 231 | Зарегистр. 27-02-2022 | Отправлено: 14:03 05-02-2024 | Исправлено: ZhekaVorobey182, 14:03 05-02-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Компьютерный форум Ru.Board » Интернет » Web-программирование » Простенький вопрос по PHP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru