ПравилаРегистрацияВход
НАВИГАЦИЯ

Учим PHP

Модераторы: нет
Список форумов » Вэб-разработкаНа страницу  1, 2, 3 ... 63, 64, 65 ... 87, 88, 89 
АВТОРСООБЩЕНИЕ
Rich
VIP
Avatar
Имя: Владимир
Сейчас нет на сайте
Репутация: 32
Регистрация: 9.05.2007
Всего сообщений: 5271
Откуда: Хреновоавтомобильск
28 февраля 2010, 14:37
Dj maga, читайте тему.Это последнее китайское предупреждение .!.
Dedof
Avatar
Имя: Владимир
Сейчас нет на сайте
Репутация: 1
Регистрация: 21.08.2006
Всего сообщений: 899
Откуда: Воркута
28 февраля 2010, 21:46
хочу спросить пробовал ли кто нибудь использовать функцию mb_substr вместо substr для коректного обрезания текста в UTF - 8 ?
Что то попробовал заменить и вообще на денвере скрипт работать перестаёт :(
Profi
Administrator
Avatar
Репутация: 126
Регистрация: 25.04.2006
Всего сообщений: 10175
Откуда: Уфа РБ
28 февраля 2010, 22:21
Dedof, когда то переводил смарт-версию на utf, всё работало .hz.
<?php $text = ( mb_strlen($text) > 10 ) ? mb_substr($text010) . ' ...' $text

Для использования этих функций на сервере должна быть подключена библиотека php mb_string
Dedof
Avatar
Имя: Владимир
Сейчас нет на сайте
Репутация: 1
Регистрация: 21.08.2006
Всего сообщений: 899
Откуда: Воркута
28 февраля 2010, 23:01
У своего хостера интересовался насчёт этой функции - ответили что поддерживается, а вот на локалке что то не получается - может в денвере этой библиотеки нет?
Dedof
Avatar
Имя: Владимир
Сейчас нет на сайте
Репутация: 1
Регистрация: 21.08.2006
Всего сообщений: 899
Откуда: Воркута
28 февраля 2010, 23:09
у меня строчка выглядит так:

if (strlen($first_post) > $chr_limit)
{
$first_post = substr($first_post, 0, $chr_limit);
$first_post .= '...';
}

меняю substr на mb_substr и вобще перестаёт работать.
Profi
Administrator
Avatar
Репутация: 126
Регистрация: 25.04.2006
Всего сообщений: 10175
Откуда: Уфа РБ
28 февраля 2010, 23:09
Dedof, в php.ini раскомментируй строчку
extension=php_mbstring.dll
Profi
Administrator
Avatar
Репутация: 126
Регистрация: 25.04.2006
Всего сообщений: 10175
Откуда: Уфа РБ
28 февраля 2010, 23:13
Dedof, все строковые функции нужно менять на мультибайтные аналоги, иначе будет работать некорректно.
Смысл твоего кода тот же что и я написал, но у меня с учётом многобайтных символов.
Profi
Administrator
Avatar
Репутация: 126
Регистрация: 25.04.2006
Всего сообщений: 10175
Откуда: Уфа РБ
28 февраля 2010, 23:17
echo strlen('ф'); // 2
echo mb_strlen('ф'); // 1
Dedof
Avatar
Имя: Владимир
Сейчас нет на сайте
Репутация: 1
Регистрация: 21.08.2006
Всего сообщений: 899
Откуда: Воркута
28 февраля 2010, 23:28
то есть если не могу применить в одном определённом месте mb_substr и надо везде менять ?
Profi
Administrator
Avatar
Репутация: 126
Регистрация: 25.04.2006
Всего сообщений: 10175
Откуда: Уфа РБ
28 февраля 2010, 23:53
Dedof, дык дело хозяйское. Будет и так и так работать.
Проблема возникает при обработке текста содержащего кириллицу. Как известно в utf одна буква русского алфавита занимает два байта.
Пример я выше написал. Если ты обрезаешь как мультибайтную строку, то и количество символов нужно считать так же.
Список форумов » Вэб-разработкаНа страницу Пред. 1, 2, 3 ... 63, 64, 65 ... 87, 88, 89 След.
 
стр.  
Страница 64 из 89
Часовой пояс: GMT + 4
Мобильный портал, Profi © 2005-2023
Время генерации страницы: 0.02 сек
Общая загрузка процессора: 23%
SQL-запросов: 4
Rambler's Top100