Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: mb_strlen на хосте выдает 8221 символов а на денвере 8187
 
 автор: sasha12342   (30.03.2013 в 14:45)   письмо автору
 
 

Здравствуйте!
Не могу понять в чём дело. Из бд вытаскиваю текст и считаю сколько в нём символов ($simvol = mb_strlen($text, 'utf-8');). На домашнем компьютере (установлен денвер) выдаёт 8187 символов а на хостинге показывает 8221 символа хотя файл и текст абсолютно идентичны.
Почему так происходит.

И ещё, как избавиться от повреждённых кириллических символов которые появляются в конце обрезанной строки?
Вырезаю так:
$text = substr($text, 0, 200);

  Ответить  
 
 автор: confirm   (30.03.2013 в 14:50)   письмо автору
 
   для: sasha12342   (30.03.2013 в 14:45)
 

Хост у вас скорее всего Unix, а в нем перевод строки это один байт, а на Widows два байта, отсюда и разница.
А избавиться от поврежденных символов - так с чего вы режете строку utf функцией для этого не предназначенной?

  Ответить  
 
 автор: sasha12342   (30.03.2013 в 15:31)   письмо автору
 
   для: confirm   (30.03.2013 в 14:50)
 

Спасибо за ответ!

А какой функцией мне вырезать первые 200 символов из текста?

  Ответить  
 
 автор: confirm   (30.03.2013 в 15:34)   письмо автору
 
   для: sasha12342   (30.03.2013 в 15:31)
 

Если вы работает с utf, то конечно с функциями для работы с мультибайными строками. Работать обычными строковыми функциями с такими строками в некоторых случаях можно, если вас в них интересуют исключительно английские символы, они в любой кодировке имеют одно значение.

  Ответить  
 
 автор: sasha12342   (30.03.2013 в 15:49)   письмо автору
 
   для: confirm   (30.03.2013 в 15:34)
 

У меня сайт в кодировке utf а текст преимущественно кириллический а задача состоит в том чтобы из текста вырезать и показать только первые 200 символа. Так как все функции работают с байтами (если я не ошибаюсь) то с кириллическим текстом может произойти так что последний символ (состоящий из двух байтах) будет разбит, и в этом случае на экране появиться "ромб с вопросительном знаком".
Как решить эту задачу?
Может есть функция которая вырезает все непонятные (повреждённые символы)?

  Ответить  
 
 автор: confirm   (30.03.2013 в 15:58)   письмо автору
 
   для: sasha12342   (30.03.2013 в 15:49)
 

Я же вам сказал какими функциями нужно пользоваться.

  Ответить  
 
 автор: sasha12342   (30.03.2013 в 17:12)   письмо автору
 
   для: confirm   (30.03.2013 в 15:58)
 

Спасибо!
$text = mb_substr($text,0,200,'utf-8');

Решило проблему. Однако ещё не понял каким образом. Читать надо, вникать. Будет свободное время почитаю и проанализирую.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования