АВТОР | СООБЩЕНИЕ |
---|
Имя: Владимир Сейчас нет на сайте Репутация: 32 Регистрация: 9.05.2007 Всего сообщений: 5271 Откуда: Хреновоавтомобильск |
| Dj maga, читайте тему.Это последнее китайское предупреждение | |
|
|
Имя: Владимир Сейчас нет на сайте Репутация: 1 Регистрация: 21.08.2006 Всего сообщений: 899 Откуда: Воркута |
| хочу спросить пробовал ли кто нибудь использовать функцию mb_substr вместо substr для коректного обрезания текста в UTF - 8 ?
Что то попробовал заменить и вообще на денвере скрипт работать перестаёт | |
|
|
Репутация: 126 Регистрация: 25.04.2006 Всего сообщений: 10175 Откуда: Уфа РБ |
| Dedof, когда то переводил смарт-версию на utf, всё работало
<?php $text = ( mb_strlen($text) > 10 ) ? mb_substr($text, 0, 10) . ' ...' : $text;
Для использования этих функций на сервере должна быть подключена библиотека php mb_string | |
|
|
Имя: Владимир Сейчас нет на сайте Репутация: 1 Регистрация: 21.08.2006 Всего сообщений: 899 Откуда: Воркута |
| У своего хостера интересовался насчёт этой функции - ответили что поддерживается, а вот на локалке что то не получается - может в денвере этой библиотеки нет? | |
|
|
Имя: Владимир Сейчас нет на сайте Репутация: 1 Регистрация: 21.08.2006 Всего сообщений: 899 Откуда: Воркута |
| у меня строчка выглядит так:
if (strlen($first_post) > $chr_limit)
{
$first_post = substr($first_post, 0, $chr_limit);
$first_post .= '...';
}
меняю substr на mb_substr и вобще перестаёт работать. | |
|
|
Репутация: 126 Регистрация: 25.04.2006 Всего сообщений: 10175 Откуда: Уфа РБ |
| Dedof, в php.ini раскомментируй строчку
extension=php_mbstring.dll | |
|
|
Репутация: 126 Регистрация: 25.04.2006 Всего сообщений: 10175 Откуда: Уфа РБ |
| Dedof, все строковые функции нужно менять на мультибайтные аналоги, иначе будет работать некорректно.
Смысл твоего кода тот же что и я написал, но у меня с учётом многобайтных символов. | |
|
|
Репутация: 126 Регистрация: 25.04.2006 Всего сообщений: 10175 Откуда: Уфа РБ |
| echo strlen('ф'); // 2
echo mb_strlen('ф'); // 1 | |
|
|
Имя: Владимир Сейчас нет на сайте Репутация: 1 Регистрация: 21.08.2006 Всего сообщений: 899 Откуда: Воркута |
| то есть если не могу применить в одном определённом месте mb_substr и надо везде менять ? | |
|
|
Репутация: 126 Регистрация: 25.04.2006 Всего сообщений: 10175 Откуда: Уфа РБ |
| Dedof, дык дело хозяйское. Будет и так и так работать.
Проблема возникает при обработке текста содержащего кириллицу. Как известно в utf одна буква русского алфавита занимает два байта.
Пример я выше написал. Если ты обрезаешь как мультибайтную строку, то и количество символов нужно считать так же. | |
|