РНР 5 в подлинникеСтраница 160 из 554 |
||
|
Глава 15. Строковые функции 325 По правде говоря, локаль — вещь довольно непредсказуемая и, как мы уже говорили, достаточно плохо переносимая между операционными системами. Так что, если ваш сценарий не очень велик, задумайтесь: возможно, лучше будет искать обходной путь (например, использовать strtr о), а не рассчитывать на локаль. Имейте в виду, что по умолчанию РНР не использует вообще никакую локаль, даже если в системе она установлена. Для того чтобы активировать локаль по умолчанию и тем самым заставить функции strtouppero, strftimef) и т. д. работать правильно, необходимо выполнить в начале скрипта следующую команду: setlocale(lc_all, ' ') ; Как видите, мы не указываем имя локали, и в этом случае РНР сам выбирает ту, что установлена в системе по умолчанию (напоминаем, что в Unix ее имя хранится в переменной окружения lang). Конечно, если вы знаете имя, то можете его здесь указать. шмшшшшт Еще раз обратите внимание, что вызывать setlocale О нужно обязательно, даже если имя локали неизвестно. В последнем случае есть шанс, что РНР сможет установить правильную локаль самостоятельно. Преобразование кодировок Иногда бывает необходимо преобразовать строку из одной кодировки кириллицы в другую. Например, мы в программе сменили локаль: была кодировка Windows-1251, а стала — K018-R. Но строки-то остались по-прежнему в кодировке Windows-1251, а значит, для правильной работы с ними нам нужно их перекодировать в KOI8-R. Для этого и служит функция преобразования кодировок. string convert_cyr_string(string $str, char $frcm, char $to) ; Функция переводит строку $str из кодировки $from в кодировку $to. Конечно, это имеет смысл только для строк, содержащих "русские" буквы, т. к. латиница во всех кодировках выглядит одинаково. Разумеется, кодировка $from должна совпадать с истинной кодировкой строки, иначе результат получится неверным. Значения $from и $to — один символ, определяющий кодировку: □ k - KOI8-R; □ w - Windows-1251; □ i - IS08859-5; □ а - Х-СР866; □ d - Х-СР866; □ m - X-MAC-Cyrillic. Функция работает достаточно быстро, так что ее вполне можно применять, скажем, для перекодировки писем в нужную форму перед их отправкой по электронной почте. 326 Часть IV. Стандартные функции РНР Функции форматных преобразований Как мы знаем, переменные в строках РНР интерполируются, поэтому практически всегда задача "смешивания" текста со значениями переменных не является проблемой. Например, мы можем спокойно написать что-то вроде: echo "Привет, Sname! Вам Sage лет."; Вспомним, что в языке С нам приходилось для аналогичных целей писать следующий код: printf("Привет, %s! Вам %s лет", name, age); Язык РНР также поддерживает ряд функций, использующих такой же синтаксис, как и их С-эквиваленты. Бывают случаи, когда их применение дает наиболее красивое и лаконичное решение, хотя это и случается довольно редко. string sprintf(string $format [, mixed args, ...]) Эта функция — аналог функции sprintf о в языке С. Она возвращает строку, составленную на основе строки форматирования, содержащей некоторые специальные символы, которые будут впоследствии заменены на значения соответствующих переменных из списка аргументов. Строка форматирования $ format может включать в себя команды форматирования, предваренные символом %. Все остальные символы копируются в выходную строку как есть. Каждый спецификатор формата (т. е. символ i и следующие за ним команды) соответствует одному, и только одному параметру, указанному после параметра $ format. Если же нужно поместить в текст % как обычный символ, необходимо его удвоить: echo sprintf("The percentage was %d%%", Spercentage); Каждый спецификатор формата включает максимум пять элементов, записанных слитно (в порядке их следования после символа %): % Заполнитель [-] Размер .Точность Тип □ Необязательный заполнитель — символ заполнения, который будет использован, если выводимая величина занимает меньше знакомест, чем имеет отведенное для нее поле. В качестве символов-заполнителей может использоваться пробел или О, по умолчанию подставляется пробел. Можно задать любой другой знак, если указать его в строке форматирования, предварив апострофом (')• □ Необязательный спецификатор выравнивания, определяющий, будет результат выровнен по правому или по левому краю поля. По умолчанию производится выравнивание по правому краю, однако можно указать и левое выравнивание, задав символ - (минус). □ Необязательное число, определяющее размер поля для вывода величины. Если результат не будет в поле помещаться, то он "вылезет" за края этого поля, но без усечения. □ Необязательное число, предваренное точкой ("."), предписывающее точность, — количество знаков после запятой в результирующей строке. Этот спецификатор |
| |
|
В начало ←предыдущая следующая→ ... 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 ... | ||