X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Переходим на юникод
PRStudio
PRStudio
Topic Starter сообщение 3.9.2012, 21:12; Ответить: PRStudio
Сообщение #1


С переходом на Юникод возникают некоторые проблемы. Приходится отказываться от привычных строковых функций и смотреть в сторону mb_*. Но вот незадача - многие функции отсутствуют, например такая как mb_str_replace. Имеет ли смысл переписывать ее, или старая добрая str_replace неплохо себя чувствует в многобайтовом просторе? Это же касается и substr и некоторых других важный (для меня) функций.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
A1ex_hb
A1ex_hb
сообщение 3.9.2012, 21:34; Ответить: A1ex_hb
Сообщение #2


С каких пор str_replace и substr не обрабатывют юникод?
Я стараюсь все скрипты писать в юникоде, никогда проблем со строковыми функциями не было.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PRStudio
PRStudio
Topic Starter сообщение 3.9.2012, 21:48; Ответить: PRStudio
Сообщение #3


Все обработают юникод, но могут отработать некорректно, для этого и придумали функции mb_*
Т.е. если корректно работает скрипт у вас, то совершенно неясно, будет ли он также работать у китайцев:
линк

Поэтому и задал такой вопрос, имеет ли смысл переписывать эти функции, или разработчики опустили их из-за полной совместимости с "многобайтовыми кодировками"
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Muxa_hb
Muxa_hb
сообщение 4.9.2012, 18:12; Ответить: Muxa_hb
Сообщение #4


кто сказал что их нет? :nea:
почитайте получше про mb_* функции
(PRStudio @ 4.9.2012, 00:12) *
например такая как mb_str_replace

str_replace ищет по заданным символам, ей без разницы в скольких они там байтах - в одном, двух, трех или десяти. заданы то они полностью - он заменит полное совпадение
(PRStudio @ 4.9.2012, 00:12) *
Это же касается и substr

а что, mb_substr() вдруг перестала работать? :sarcastic:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Muxa_hb
Muxa_hb
сообщение 4.9.2012, 18:17; Ответить: Muxa_hb
Сообщение #5


A1ex, нет никаких черных ромбиков со знаком вопроса? [PHP]<?php header('Content-type: text/html; charset=utf-8');
$text = 'Привет';
echo substr($text,0,3); ?>[/PHP]
или вот еще пример, доказывающий что пых проверяет по байту а не по символу (а в UTF-8 каждый русский символ в два байта)
[PHP]<?php header('Content-type: text/html; charset=utf-8');
$text = 'Привет'; #а потом замени на $text = 'Helloo';
echo isset($text[7]) ? 'Больше 7 байтов' : 'Меньше 7 байтов'; ?>[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PRStudio
PRStudio
Topic Starter сообщение 7.9.2012, 0:08; Ответить: PRStudio
Сообщение #6


Почитал комментарии, да и сам побаловался с китайскими и еще черт знает с какими иероглифами, действительно работает нормально. Перечитал комментарии на PHP.net, и тоже убедился, что все работает нормально, и проблемы возникают только при несовпадении кодировок (если данные берутся извне). А то я тут уже обертки str_replace, substr_replace написал, думал продолжить, теперь хоть остановлюсь :sarcastic:

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 24.4.2024, 12:45
Дизайн