Для удобного чтения числа лучше делить по разрядам, т.е. из 1000 сделать 1 000, 1000000 = 1 000 000 и т.д.
В PHP уже есть такая функция
В ней существует непрятная особенность: она не принимает больше 1-го символа в качестве разделителей. Ловкость рук и числа выходят с
-
function print_price($params) {
-
-
}
Чтобы использовать эту функцию в популярном шаблонизаторе smarty, просто прописываем в доступном месте:
-
$tpl->register_modifier(“print_price”, “print_price”);
Теперь можем писать {$number|print_price} прям в шаблоне.
PROFIT!
number_format, php, smarty, str_replace, числа
Иногда маленькая, но хорошая вещь доставляет огромное удовольствие.
Функция, которая ставит числовые окончания слова в нужной форме:
-
function itemWords($col = 0) {
-
$last =
(int
)substr($col, -
1);
-
if($last == ‘0′ || ($last > ‘4′ && $last <= ‘9′)) {
-
$return = ‘товаров’;
-
}elseif($last == ‘1′){
-
$return = ‘товар’;
-
}else{
-
$return = ‘товара’;
-
}
-
return $return;
-
}
-
//Проверяем
-
echo ‘2′, itemWords
(2);
//2 товара
-
echo ‘1′, itemWords
(1);
//1 товар
-
echo ‘102′, itemWords
(102);
//102 товара
-
echo ‘38′, itemWords
(38);
//38 товаров
-
enjoy!
php, substr
Часто бывает необходимо работать с кириллицей в UTF-8. PHP до сих не может корректно обрабатывать такие строки. На помощь приходит волшебная функция iconv();
Попробуем обработать русскую строку так, чтобы перевести строку в транслит(например для формирования корректного URL или имени файла для закачки). Напишем функцию rus2lat():
-
function rus2lat($text) {
-
$text =
substr($text,
0,
250);
//обрезаем текст до приличных размеров(для URL)
-
$rus =
array(‘ё’,
‘й’,
‘ц’,
‘у’,
‘к’,
‘е’,
‘н’,
‘г’,
‘ш’,
‘щ’,
‘з’,
‘х’,
‘ъ’,
‘ф’,
‘ы’,
‘в’,
‘а’,
‘п’,
‘р’,
‘о’,
‘л’,
‘д’,
‘ж’,
‘э’,
‘я’,
‘ч’,
‘с’,
‘м’,
‘и’,
‘т’,
‘ь’,
‘б’,
‘ю’,
‘ ‘);
//задаем массив русских букв
-
$eng =
array(‘yo’,
‘y’,
‘c’,
‘u’,
‘k’,
‘e’,
‘n’,
‘g’,
’sh’,
’sch’,
‘z’,
‘h’,
‘_’,
‘f’,
‘i’,
‘v’,
‘a’,
‘p’,
‘r’,
‘o’,
‘l’,
‘d’,
‘zh’,
‘e’,
‘ya’,
‘ch’,
’s’,
‘m’,
‘i’,
‘t’,
‘_’,
‘b’,
‘yu’,
‘_’);
//соразмерный массив транслита
-
-
-
-
for($i = 0;$i <= $count; $i++) { //временно пережимаем всю кириллицу в WIN-1251, для корректной работы
-
$russ[] =
iconv(‘UTF-8′,
‘CP1251//IGNORE’,
$rus[$i]);
//IGNORE - символы, которых нет в конечной кодировке, будут опущены
-
}
-
-
$word =
iconv(‘UTF-8′,
‘CP1251//IGNORE’,
$text);
//пережимаем текст в WIN-1251
-
$word =
str_replace($russ,
$eng,
strtolower($word));
//меняем кириллические символы на символы транслита. strtolower можно убрать, тогда придется добавить большие буквы в массивы $rus и $eng.
-
-
return iconv(‘CP1251//IGNORE’,
‘UTF-8′,
$word);
//возращаем строку в UTF-8
-
}
Результат работы:
-
echo rus2lat
(‘Привет мир!’);
//Hello world. Шутка :) "privet_mir!"
-
Таким же образом можно написать свои функции strtolower_ru(), strtoupper_ru(), ucfirst_ru() и др. Для этого просто надо поиграть со вторым массивом.
iconv, php, utf-8, win1251