Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Обрезание строк utf8 (https://javascript.ru/forum/server/13881-obrezanie-strok-utf8.html)

cuberboy 18.12.2010 19:35

Обрезание строк utf8
 
бд и страница в utf8.

Вывожу из базы анонс текста
<?=substr(strip_tags($f[block]),0,249);?>


Ну и он мне рисует на конце строки знак вопросика, типа обрезал пол символа. как с этим бороться? неужели конвертировать в вин1251 обрезать и птом выводить :-E

B@rmaley.e><e 18.12.2010 20:03

Используйте функции, работающие с мультибайтной кодировкой.

Gozar 18.12.2010 20:42

удалено.

cuberboy 18.12.2010 22:52

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 84335)
Используйте функции, работающие с мультибайтной кодировкой.

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

вариант с пробелом красив! )))

Andrei 26.12.2010 17:32

Попробуйте так:

<?php
    substr(strip_tags($f[block]), 0, 249, 'utf-8');
?>

Gozar 26.12.2010 17:43

удалено.

PeaceCoder 26.12.2010 17:44

mb_substring

Упс. Написали в одно время =)

Andrei 26.12.2010 17:49

Цитата:

Сообщение от Gozar (Сообщение 85355)
Andrei,
может тогда:
mb_substr(strip_tags($f[block]), 0, 249, 'utf-8');
?

но вообще это без разницы, т.к. всё равно резать по пробелу будет одинаково, а резать не по пробелу не кавайно.

Забыл поменять, с mb_substr лучше будет :)

Gozar 26.12.2010 18:20

удалено.

PeaceCoder 26.12.2010 20:07

Цитата:

Сообщение от Gozar
пробывал, у меня она не работает - видимо нужны дополнительный модули.

Нормальный хостинг должен иметь этот модуль, т.к. утф сейчас почти везде используется.

Gozar 26.12.2010 20:35

удалено.

PeaceCoder 27.12.2010 20:18

Цитата:

Сообщение от Gozar
Существуют решения

не спорю. но и не отрицаю что множество хороших уже эту функцию включили.

cuberboy 13.01.2011 00:10

тем у кого нет МБ рекомендую

#

iconv_strlen() - Возвращает число символов строки;
#

iconv_strpos() - Находит позицию первого вхождения подстроки в строку;
#

iconv_strrpos() - Находит позицию последнего вхождения подстроки в строку;
#

iconv_substr() - Вырезает часть строки.

walik 12.02.2011 17:56

Как вариант еще:
mb_internal_encoding() устанавливает внутреннюю кодировку символов как encoding. Если этот параметр опущен, возвращает текущую внутреннюю кодировку.

Пример:
mb_internal_encoding("UTF-8");

cuberboy 14.02.2011 07:46

как выше написано для этого нужен дополнительный модуль....


Часовой пояс GMT +3, время: 23:40.