Разделить строку на символы
<?php
$chars = preg_split('//u', $string);
Склонение числительных в русском языке
<?php
function decl_int($number, $titles){
$cases = array(2, 0, 1, 1, 1, 2);
return sprintf($titles[($number%100>4 && $number%100<20) ?
2 :
$cases[min($number%10, 5)]],
$number);
}
foreach(array(0, 1, 2, 5) as $v)
echo decl_int($v, array('%s пользователь',
'%s пользователя',
'%s пользователей'))."\n";
0 пользователей
1 пользователь
2 пользователя
5 пользователей
Дополнение символами в printf/sprintf
<?php
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]\n", $s); // просто распечатать
printf("[%10s]\n", $s); // дополнить пробелами слева
printf("[%-10s]\n", $s); // дополнить пробелами справа
printf("[%010s]\n", $s); // дополнить слева нулями
printf("[%'#10s]\n", $s); // дополнить символом решетки
printf("[%10.10s]\n", $t); // обрезать до 10 символов
[monkey]
[ monkey]
[monkey ]
[0000monkey]
[####monkey]
[many monke]
У explode имеется ещё и третий аргумент. В зависимости от того - положительный он или отрицательный - поведение основательно изменяется. Отрицательный аргумент - отбрасывает результаты с конца возвращаемого массива.
<?php
$str = 'one|two|three|four';
print_r(explode('|', $str, 2));
print_r(explode('|', $str, -1));
Array
(
[0] => one
[1] => two|three|four
)
Array
(
[0] => one
[1] => two
[2] => three
)
Экранировать кавычки в строке
<?php
foreach(array("'", '"', chr(0)) as $v)
echo addslashes($v)."\n";
\'
\"
\0
Нечеткое сравнение строк
/**
* Функция нечеткого сравенения строк
* выдает % совпадения двух строк.
* Для получения наилучшего результата, нужно поиграться с параметрами
* minLen и maxLen - от них зависит точность совпадения
* @param string $x первая строка
* @param string $y вторая строка
* @param string $minLen минимальный размер подстроки для сравнения - рекомендуется 1 или 2
* @param string $maxLen масимальный размер подстроки для сравнения - рекомендуется
* не более трети длины минимальной из строк.
* Если не задать - будет равна длине минимальнйо строки
* @return float возвращает процент совпадения строк
*/
function fuzzy_compare($x,$y,$minLen=1,$maxLen=0)
{
$l1 = strlen($x);
$l2 = strlen($y);
if ($maxLen ==0 ) $maxLen = min($l1,$l2);
$summ = 0;
$count = 0;
for($l = $minLen; $l<=$maxLen;$l++)
{
for ($i = 0; $i< ($l1 - $l); $i++)
{
$part = substr($x,$i,$l);
$count ++;
if (strpos($y,$part)!==FALSE) $summ++;
}
}
return 100*$summ/$count;
}
//Пример:
echo fuzzy_compare("Привет медведь","Превед медвед",1,4)
73.469387755102
Преобразование строки к верблюжейНотацииЗаписиИмен (camelCase)
/**
* @param string $name имя разделеное подчеркиваниями, например user_first_name
* @return string имя в формате camelCase, например userFirstName
*/
function toCamelCase($name) {
$parts = explode("_",$name);
foreach ($parts as $num=>&$part) {
if ($num == 0){
$part = strtolower($part);
}
else{
$part = ucfirst($part);
}
}
return implode($parts);
}
echo toCamelCase('user_phones_to_users_link');
userPhonesToUsersLink
Источники:
- 2 - forum.woweb.ru
- 3 - www.php.net
- 4 - ru.php.net
Авторы:
- 6-7 - MihanEntalpo@yandex.ru