PHP 5 » Blog Archive » Строки и региональные стандарты

Строки и региональные стандарты

Поскольку люди живут в разных странах, часто бывает необходимо форматировать строки в соответствии с различными настройками. Пример этого был приведен в предыдущем разделе, но поддержка такого типа функциональности является намного более универсальной. Многие операционные системы, под управлением которых функционирует РНР, предоставляют множество возможностей автоматического и прозрачного управления локальными настройками строковых значений.
В самом деле, единая для всей системы установка может оказаться далеко не тем решением, которое вы ищете, особенно если занимаетесь созданием Web-сайта, предназначенного для посетителей из разных стран. Поэтому РНР предлагает функцию setlocale(), которая может применяться для управления поведением некоторых функций форматирования строк:
bool setlocale (Scategory, Slocalef, Slocale…]);Параметр Slocale — это имя региональной установки, которая должна быть изменена для класса установок, заданного в Scategory. В действительности, вы можете указать более одной региональной установки, добавляя новые экземпляры этого параметра. Это удобно, поскольку одни и те же региональные установки могут иметь различные имена, в зависимости от используемой операционной системы.
Возможности тонкой настройки, предлагаемые setlocale [) при определении аспектов управления строками, которых они касаются, могут показаться чрезмерными, но со временем оказывается, что они очень удобны. Например, модификация класса LC_NUMERIC оказывает влияние на все операции преобразования числовых значений, как на входе, так и на выходе. Это означает, что когда вы принимаете строку извне своего сценария — будь то от пользователя или из базы данных — она должна быть отформатирована в соответствии с региональным стандартом, установленным вызовом setlocale (), либо она не будет правильно распознана системой.
В большинстве случаев вы о^аничите манипуляции с региональными установками только до LC_MONETARY, LC_TYPE и LC_COLLATE. Возможно, вы не будете менять LC_NUMERIC, кроме как в особых ситуациях, поскольку это затронет способ интерпретации строк при их конвертировании в числа. Поэтому, например, если ваш сервер базы данных возвращает числовые значения с использованием английской нотации (ххх.хх), а вы имеете LC_NUMERIC, установленной в значение другого регионального стандарта, дробная часть будет проигнорирована.

Tags: , ,

Related posts


Leave a Reply