• Авторизация


Без заголовка 05-12-2009 23:18 к комментариям - к полной версии - понравилось!


В книжке "PHP для чайников" на странице 83 есть функции для обработки текстовых строк. Я ещё не все попробовал, но вот что выудил.

strlen ("строка") - Возвращает длину строки

Агы, так точно. Возвращает не длинну строки, а размер её в байтах. То есть, например, строка "Йа строчко" по её мнению имеет в своём составе 19 символов, если она в юникоде))).

ucfirst ("строка") - Преобразует первый символ строки в верхний регистр
ucwords ("строка") - Преобразует первый символ каждого слова строки в верхний регистр

Агы, преобразует, если первые символы, над которыми производится операция, не кириллицей))).

strrev ("строка") - Возвращает строку в обратном порядке

Да-да, точно, возвращает. Но если в юникоде сделать такое:

echo strrev ("Прювет лунатикам");

То на выходе будет такое

�акиЂѰнЃѻ� �ѵвЎрџ�



Ну, оно типа переворачивает байты в обратный порядок и двухбайтовые символы сходят с ума. Интересно то, что не все...
вверх^ к полной версии понравилось! в evernote
Комментарии (4):
_DOOMer_ 06-12-2009-08:20 удалить
В PHP до сих пор нет нормальной поддержки ююникода, отсюда и все эти грабли. В версии 6.0 вроде все должнго быть поправлено, но когда эта версия будет отрелизена (и самое главное -- когда получит массовое распространение на шаред-хостингах)...... одному богу известно.

А длину юникодной строки можно правильно узнать через mb_strlen, работающую идентично strlen. Главное чтобы PHP был собран с расширением mb_string
V_exeR 06-12-2009-10:01 удалить
По-моему, это очень старая книжка. Ибо utf-8 там точно не учитывается.
Linux_Loader 06-12-2009-13:14 удалить
Ну, книжка не очень прямо старая, но далеко не новая. Вобщем-то, меня в ней в первую очередь устраивает то, что там всё объясняется на пальцах в основном. Вот когда её прочту, возьмусь за более новые и серьёзные)))).
Linux_Loader 06-12-2009-23:03 удалить
_DOOMer_, да, точно, заряботало))). Проверил, phpinfo сказал, что Multibyte Support enabled. Только заработало оно только после того, как я в файле прописал

mb_internal_encoding('UTF-8');

Я эту строчку случайно обнаружил в инете и наобум набрал её, вдруг поможет. Помогло :). Спасибо :).


Комментарии (4): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Без заголовка | Linux_Loader - Дневник Linux_Loader | Лента друзей Linux_Loader / Полная версия Добавить в друзья Страницы: раньше»