Методы для работы со строками.
Расщепление строки по строке-метке.
Пример
$filename = Str::getStringAfterMark($path, '/', true);
if (false === $filename)
filename = $path;
$path | $filename
——————————————————————————————
'shop/images/logo.png' | 'logo.png'
'logo.png' | 'logo.png'
'shop/' | ''
Склонение слов и фраз до и после целых чисел.
Возвращает комбинацию числа и просклонённых слов.
$prewords = [
'Слово перед числами, окончивающимися цифрой 1',
'Слово перед числами, окончивающимися цифрами: 2, 3, 4',
'Слово перед числами, окончивающимися цифрами: 5, 6, 7, 8, 9, 0, 11, 12, 13, 14'
];
$number — целое число, с которым должны склоняться слова.
$afterwords = [
'Слово после чисел, окончивающихся цифрой 1',
'Слово после чисел, окончивающихся цифрами: 2, 3, 4',
'Слово после чисел, окончивающихся цифрами: 5, 6, 7, 8, 9, 0, 11, 12, 13, 14'
];
Пример:
echo 'Я знаю '; echo Str::declineWords('', ['иностранный язык', 'иностранных языка', 'иностранных языков'], 5); # Выведет: "Я знаю 5 иностранных языков"
Пример:
echo Str::declineWords(
['найдена', 'найдены', 'найдено'],
2,
['запись', 'записи', 'записей']
);
# Выведет: "найдены 2 записи"
$options — при подстановке в качестве аргумента массива ['no-number' => true], будет возвращена не комбинация числа и слов, а только слова.
Для булевых опций можно применять короткую форму записи. Подробности см. в описании метода Arr::formatOptions(), который и применен внутри описываемого метода.
Транслитерация строк — замена нелатинских букв на буквы латинского языка.
Преобразование строк для использования в качестве алиасов в ЧПУ (человекопонятных URL). Строка переводится в нижний регистр. Если задан второй аргумент, производится транслитерация. Символы, не являющиеся буквами, цифрами или нижней чертой, преобразуются в дефис. Повторяющиеся дефисы заменяются на одинарный дефис.
$options = [
'zero', # Возвращает true и для числа 0 и строки '0'
'negative', # Возвращает true и для отрицательных чисел (например: -9 и '-9')
];
Для булевых опций можно применять короткую форму записи. Подробности см. в описании метода Arr::formatOptions(), который и применен внутри описываемого метода.
Смотрите также функцию isEmpty().
Этот метод используется для форматирования чисел, в том числе, перед этим уже форматированных. Он устанавливает новый символ для десятичного разделителя и новый символ для разделителя тысяч.
Если вам нужно просто отформатировать число float, проще воспользоваться функцией number_format($number, $decimals, $mark, $separator).
$format = [
'decimals'=>0, # Число знаков в десятичной части
'mark'=>'.', # Символ для отделения десятичной части
'separator'=>'', # Символ для разделения тысяч
];
',.'
), иначе при возникновении любой неоднозначности, метод вернет первоначальное число $number без преобразования.
Например, если преобразовывать число "-12,345.678" (в американской формате) к российскому формату, то даже без указания старого десятичного знака все ясно, и метод вернет: "-12 345,678". Метод также преобразует "12,345,678" в "12 345 678". Однако преобразовать число "12,345", не зная что означает запятая, уже будет будет нельзя.
$multiplier — множитель (используется для корректировки цен в большую или меньшую сторону).
Пример преобразования числа заданного в американском формате в российский формат цен
echo Str::formatNumber('-12,345.678', ['decimals'=>2, 'mark'=>',', 'separator'=>' '], '.');
# Выведет: -12 345,69
Некоторые PHP директивы (post_max_size and upload_max_filesize), измеряемые в байтах, могут иметь сокращеный вид с буквами: K (для килобайт), M (для мегабайт) и G (для гигабайт) на конце. Данный метод преобразует их в число байтов.
Пример:
echo Str::normalizeShorthandBytes(
ini_get('upload_max_filesize')
);