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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проблема с substr

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: непонятный "вопросик"
garvey
Отправлено: 10 Июня, 2010 - 21:39:50
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Такая задача. Есть страница простого блога. Та выводятся посты. Текст самих постов должен обрезаться.
У меня максимум 200 символов.
PHP:
скопировать код в буфер обмена
  1.                         $text = mysql_result ($select, $i, 0);
  2.                         if (strlen ($text) >= $this -> text_length)
  3.                         {
  4.                                 $text=mb_substr($text,0,$this -> text_length)."...";
  5.                         }      

Вроде всё нормально. Но есть 2 проблемы.
1) Почему-то выводится не 200 первых символов, а половина, т.е. 100.
2) Иногда перед многоточием вставляется "вопросик в ромбике". Откуда он берется? Везде кодировка UTF-8 без BOM.

Пробовал substr вместо mb_substr, то же самое.
 
 Top
SAD
Отправлено: 10 Июня, 2010 - 21:56:38
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




mb_substr($string,$start,$length,'utf-8') так попробуйте

(Отредактировано автором: 10 Июня, 2010 - 22:02:20)

 
 Top
garvey
Отправлено: 10 Июня, 2010 - 22:02:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




TEXT.
Да, все помещается. Когда я вывожу текст целиком, он без этих значков.
(Добавление)
Большое спасибо. Это решило все проблемы.
 
 Top
SAD
Отправлено: 10 Июня, 2010 - 22:11:26
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




обращайтесь)
 
 Top
JustUserR
Отправлено: 11 Июня, 2010 - 15:28:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




garvey пишет:
Почему-то выводится не 200 первых символов, а половина, т.е. 100
Дело в том что юникодный символ занимает не один байт а два байта - и если PHP-скрипт настроек на работу с определенной однобайтовой кодировкой причем значения HTTP-заголовков как Content-type и Accept-charset не играют значения - то он будет трактовать юникодную последовательность как набор каких-то ASCII-симолов
Вообще при сохранении файла самого PHP-скрипта в юникодную кодировку и нахождения в нем юникодных строковых констант - PHP-интерпретатор должен установить для него соответствующую локаль хотя это можно сделать и с помощью специальной функции


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB