Функции PHP

24.08.2008

В то время как есть много языков, в которых каждый необходимый символ может быть представлен взаимно-однозначным отображением к значению на 8 битов, есть также несколько языков, которые требуют ,большего числа символов для письменной связи, которая не может содержаться в пределах одного байта. Многобайтовая кодировка символов была разработана для работы с более чем 256 символами в правильной bytewise кодировке.
Когда Вы управляете строками (вырезка, разбивание, соединение, и т.д.) , закодированных в многобайтовом кодировании, Вы должны использовать специальные функции, так как два или больше последовательных байта могут представить единственный(отдельный) символ в таких схемах кодирования. Иначе, если Вы применяете однобайтовую строковую функцию к строке, созданной из многобайтовых символов, функция будет не в состоянии обнаруживать начало или окончание многобайтовых символов.
mbstring обеспечивает эти многобайтовые определенные строковые функции, которые помогают Вам иметь дело с многобайтовым кодированием в PHP, который, как предполагается, используется с единственным(отдельным) кодированием байта. В дополнение к этому, mbstring обрабатывает символ, кодирующий преобразование между возможными парами кодирования.
mbstring также предназначен, чтобы обработать кодирование на основе UTF-8 и UCS-2 и других (смотрите ниже), так как mbstring был первоначально разработан для использования в японских web-страницах.
,
что совместимо с
Вот примеры внутренней кодировки символов, которые работают и НЕ работают с PHP.
Кодировки символов, не работающие с PHP, могут быть конвертированы с
помощью функции конвертации HTTP-ввода/вывода модуля
.
Примечание: SJIS не должна использоваться для внутреннего кодирования, если читатель
не знаком достаточно хорошо с вопросами работы разборщика/компилятора и кодирования символов.
Примечание: Если вы используете БД с PHP, рекомендуется использовать одну кодировку
для БД и
для облегчения использования и повышения производительности.
Если вы используете PostgreSQL, он поддерживает кодировки символов,
которые отличаются от backend-кодировки. См. детали в учебнике PostgreSQL.
это модуль расширения. Вы обязаны подключить его скриптом
. См. детали в разделе
.
. Эта опция нужна для использования
-функций.
-машины конвертации. Если эта возможность включена, кодировка символов HTTP-ввода
может быть автоматически конвертирована в
mbstring.internal_encoding
.
Конвертация кодировки символов HTTP-ввода/вывода может конвертировать
также двоичные данные. Пользователям предлагается контролировать конвертацию
кодировки символов, если бинарные данные используются для ввода/вывода HTTP.
,
не конвертирует кодировку символов в POST-данных. Если это так, строки должны
конвертироваться во внутреннюю кодировку символов.
Нет способов управлять конвертацией символов HTTP-ввода из PHP-скрипта.
Отключение конвертации символов HTTP-ввода нужно сделать в
php.ini
.
httpd.conf
.htaccess
. Обратитесь к разделу
и
учебнику Apache.
Есть несколько способов включить конвертацию кодировки символов вывода.
Один - это использование
php.ini
, другой - функция
с callback-функция.
Примечание: отличается от PHP3-i18n. Кодировка символов конвертируется с использованием
буфера вывода.
поддерживает нижеследующие кодировки символов. Кодировка символов может быть
специфицирована параметром
.
Вот кодировки, поддерживаемые данным расширением PHP:
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
.
php.ini
, принимающее имя кодировки,
принимает также "
".
функции, принимающие имя кодировки, принимают и
"
".
" установлено, никакая конвертация кодировки символов не выполняется.
" установлено, оно расширяется до "
ASCII,JIS,UTF-8,EUC-JP,SJIS
".
См. также
Примечание: "Поддерживаемые кодировки символов" не означает, что это работает как внутренний код символа.
Приводим значения по умолчанию, устанавливаемые в php.ini
mbstring.internal_encoding
mbstring.http_input
mbstring.http_output
mbstring.detect_order
определяет порядок определения кодировки символов по умолчанию. См. также
mbstring.substitute_character
Web-браузерам предлагается использовать ту же кодировку при отправку форм.
Однако браузеры могут не использовать ту же кодировку символов. См.
для определения кодировки браузера.
в HTML-формах,
не конвертирует кодировку символов в POST-данных. Пользователь обязан сделать
это в скрипте, если конвертация нужна.
Одновременно браузеры достаточно наворочены, чтобы определять кодировку символов в HTML.
лучше установить в HTTP-шапке/header. Измените
в соответствии с кодировкой символов.
Перегрузка/ Поскольку большинство приложений PHP написаны на языках, использующих
однобайтную кодировку символов, имеются некоторые трудности при работе с
многобайтными строками, в том числе с японскими. Большинство строковых PHP-функций,
таких как
, не поддерживают многобайтные строки.
Многобайтное расширение (mbstring) имеет строковые РНР-функции с
поддержкой многобайтных символов (например,
поддерживает ).
Многобайтное расширение (mbstring) также поддерживает 'перегрузку функций'
для добавления функциональности многобайтных строк без модификации кода.
Используя перегрузку функций, некоторые строковые функции PHP будут перегружены многобайтными строковыми функциями.
Например,
вызывается вместо , если перегрузка функций включена. Перегрузка функций облегчает перенос
приложений, поддерживая только однобайтные кодировки для многобайтных приложений.
mbstring.func_overload
php.ini
должно иметь некоторое положительное значение для использования перегрузки функций.
Это значение должно специфицировать категорию перегружающей функции: 1
включает перегрузку функции mail; 2 - строковые функции, 4 - функции
регулярных выражений. Например, если установлена 7, mail, strings и regex
функции должны перегружаться. Список перегружаемых функций дан в таблице.
Таблица 1. Перегружаемые функции
Большинство японских символов для своего представления требуют более
одного байта на символ. Кроме того, в японском окружении используются разные
схемы кодировки. Существуют кодировки EUC-JP, Shift_JIS(SJIS) и
ISO-2022-JP(JIS). По мере приобретения популярности Unicode начинает
использоваться также UTF-8. при разработке Web-приложений для японской среды
важно использовать набор символов, соответствующих текущей задаче - HTTP ввод/вывод, RDBMS и E-mail.
Для хранения символа можно использовать до 6 байтов.
Многобайтный символ обычно в два раза шире однобайтного. Более широкие символы называются
"zen-kaku" - что означает "полная ширина", более узкие называются "han-kaku" -
что означает "половина ширины". "zen-kaku" имеют обычно фиксированную ширину.
Некоторые кодировки определяют shift(escape)-последовательность для входа/выхода в/из многобайтных строк.
ISO-2022-JP обязан использоваться для SMTP/NNTP.
"i-mode" web-сайт предполагается использовать с SJIS.
Многобайтные кодировки и связанные с ними вопросы очень сложны.
Невозможно рассмотреть их здесь достаточно подробно. Дополнительно просмотрите следующие ресурсы.
http://www.unicode.org/
ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf
Содержание - конвертирует "kana" из одной в другую ("zen-kaku" ,"han-kaku" и другие)
- совпадение с регулярным выражением, с многобайтной поддержкой
- заменяет регулярное выражение с многобайтной поддержкой, игнорируя регистр
- совпадение с регулярным выражением, игнорируя регистр, с многобайтной поддержкой

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Рубрики: Без рубрики |

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.