Старый 11.04.2007, 16:55   #1   
feelthebeat
 
Аватар для Breathe
 
Сообщений: 765
Регистрация: 20.09.2003
Возраст: 39

Breathe вне форума Не в сети
Question Вопрос substr [PHP]

Проблема такая. Получаю строку в UTF8. Обрезаю substr и в результате иногда вконце появляется вопросик. Тоесть было "Организация и управление маркетинговой деятельностью" - получилось "Организация и управление мар�...". Как избежать вопросика? =)
  Ответить с цитированием
Старый 11.04.2007, 17:06   #2   
Форумец
 
Аватар для Vital_N
 
Сообщений: 1,834
Регистрация: 04.04.2005

Vital_N вне форума Не в сети
Breathe, юзай mb_substr
вообще при работе с UTF - все строковые функции должны использоваться multi-byte
  Ответить с цитированием
Старый 11.04.2007, 17:10   #3   
Форумец
 
Аватар для Vital_N
 
Сообщений: 1,834
Регистрация: 04.04.2005

Vital_N вне форума Не в сети
зы
забыл сказать - только пых должен быть с поддержкой mbstring собран
  Ответить с цитированием
Старый 11.04.2007, 17:45   #4   
xxCENSOREDxx
 
Сообщений: 983
Регистрация: 09.04.2006
Возраст: 44

alemiks вне форума Не в сети
в комментах к описанию substr есть вот что:
Цитата:
<?php
function utf8_substr($str,$from,$len){
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
}
?>
  Ответить с цитированием
Старый 11.04.2007, 18:06   #5   
feelthebeat
 
Аватар для Breathe
 
Сообщений: 765
Регистрация: 20.09.2003
Возраст: 39

Breathe вне форума Не в сети
Спасиб.
Только вот добавил mbstring в php.ini и сервак перестал отвечать на запросы. Странно все это, пойдука я лучше домой! =)
  Ответить с цитированием
Старый 12.04.2007, 10:19   #6   
feelthebeat
 
Аватар для Breathe
 
Сообщений: 765
Регистрация: 20.09.2003
Возраст: 39

Breathe вне форума Не в сети
Пришел сегодня и сервер как ни в чем не бывало заработал. В результате я смог немного поэксперементировать с mb_substr. Напрягает, что приходится всегда указывать кодировку при обращении к функции. Может сначала перекодировать Windows-1251 и уже с этим делать операции, а потом назад?
  Ответить с цитированием
Старый 12.04.2007, 11:33   #7   
Форумец
 
Аватар для Vital_N
 
Сообщений: 1,834
Регистрация: 04.04.2005

Vital_N вне форума Не в сети
Цитата:
Сообщение от Breathe
Пришел сегодня и сервер как ни в чем не бывало заработал. В результате я смог немного поэксперементировать с mb_substr. Напрягает, что приходится всегда указывать кодировку при обращении к функции. Может сначала перекодировать Windows-1251 и уже с этим делать операции, а потом назад?
т.е перегнать в вин займет меньше времени чем указать кодировку?
  Ответить с цитированием
Старый 12.04.2007, 11:41   #8   
feelthebeat
 
Аватар для Breathe
 
Сообщений: 765
Регистрация: 20.09.2003
Возраст: 39

Breathe вне форума Не в сети
Ну получил строку, на нее mb_convert_encoding, помучил и отпустил снова благословив mb_convert_encoding. Йо?
  Ответить с цитированием
Старый 12.04.2007, 11:56   #9   
Форумец
 
Аватар для Vital_N
 
Сообщений: 1,834
Регистрация: 04.04.2005

Vital_N вне форума Не в сети
зачем стока телодвижений? )) храни все в 1251 и выводи в 1251 и будет тебе счастье если с юникодом не хочешь заморачиваться )
  Ответить с цитированием
Старый 12.04.2007, 12:42   #10   
feelthebeat
 
Аватар для Breathe
 
Сообщений: 765
Регистрация: 20.09.2003
Возраст: 39

Breathe вне форума Не в сети
В том то и дело что нужен юникод! У меня там система многоязычная =)
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind