Малоизвестные функции на PHP
Сегодня рассмотрим малоизвестные функции на PHP. Почему-то многие не используют их в тех местах, где это необходимо. Кто-то из начинающих не хочет заморачиваться и тратить время на поиск и чтение документации по PHP.
checkdate()
Функция проверяет корректность даты по григорианскому календарю.
<?php var_dump(checkdate(2, 29, 2016)); // Возвращает true var_dump(checkdate(2, 29, 2017)); // Возвращает false ?>
Не правда ли, полезное решение для проверки даты. Документация по checkdate.
highlight_string()
Функция для подсветки синтаксиса строки. Выводит или возвращает PHP код с разметкой html для подсвеченного синтаксиса, используя цвета, определенные во встроенном обработчике подсветки синтаксиса PHP.
<?php highlight_string('<?php phpinfo(); ?>'); ?>
Документация по highlight_string. Еще есть функция highlight_file() для подсветки синтаксиса файла.
php_strip_whitespace()
Данная функция возвращает исходный код без комментариев и пробелов.
?php // PHP комментарий /* * Другой PHP комментарий */ echo php_strip_whitespace(__FILE__); // Символы новой строки считаются пробелами, и также удаляются: do_nothing(); ?>
Хороший способ очистить код от лишнего. Документация по php_strip_whitespace.
get_defined_vars()
Возвращает массив всех определенных переменных.
<?php print '<pre>' . htmlspecialchars(print_r(get_defined_vars(), true)) . '</pre>'; print '<pre>' . htmlspecialchars(print_r($_SERVER, true)) . '</pre>'; ?>
Кто-то подумает, а зачем нужна данная функция, но вот кому-то может понадобиться получить массив всех определенных переменных. А вот документация по get_defined_vars.
str_word_count()
Функция возвращает информацию о словах, входящих в строку.
<?php $str = "Hello fri3nd, you're looking good today!"; print_r(str_word_count($str, 1)); print_r(str_word_count($str, 2)); print_r(str_word_count($str, 1, 'àáãç3')); echo str_word_count($str); ?>
Без сомнения, можно найти применение для данной функции в вашем проекте. Документация по str_word_count.
levenshtein()
Вычисляет расстояние Левенштейна между двумя строками.
<?php // введенное слово с опечаткой $input = 'carrrot'; // массив сверяемых слов $words = array('apple','pineapple','banana','orange', 'radish','carrot','pea','bean','potato'); // кратчайшее расстояние пока еще не найдено $shortest = -1; // проходим по словам для нахождения самого близкого варианта foreach ($words as $word) { // вычисляем расстояние между входным словом и текущим $lev = levenshtein($input, $word); // проверяем полное совпадение if ($lev == 0) { // это ближайшее слово (точное совпадение) $closest = $word; $shortest = 0; // выходим из цикла - мы нашли точное совпадение break; } // если это расстояние меньше следующего наименьшего расстояния // ИЛИ если следующее самое короткое слово еще не было найдено if ($lev <= $shortest || $shortest < 0) { // set the closest match, and shortest distance $closest = $word; $shortest = $lev; } } echo "Вы ввели: $input\n"; if ($shortest == 0) { echo "Найдено точное совпадение: $closest\n"; } else { echo "Вы не имели в виду: $closest?\n"; } ?>
Хороший способ для сравнения двух строк между собой. Документация по levenshtein.
constant()
Функция возвращает значение константы, даже если неизвестно её имя.
<?php define("MAXSIZE", 100); echo MAXSIZE; echo constant("MAXSIZE"); // результат аналогичен предыдущему выводу interface bar { const test = 'foobar!'; } class foo { const test = 'foobar!'; } $const = 'test'; var_dump(constant('bar::'. $const)); // string(7) "foobar!" var_dump(constant('foo::'. $const)); // string(7) "foobar!" ?>
Полезная возможность обращения к значению константы при неизвестности ее имени. Документация по constant.
usleep()
Функция очень похожа на sleep. Данная функция откладывает выполнение на микросекунды.
<?php // Текущее время echo date('h:i:s') . "\n"; // ждать 2 секунды usleep(2000000); // вернуться к исполнению echo date('h:i:s') . "\n"; ?>
Документация по usleep.
chunk_split()
Функция разбивает строку на фрагменты. Документация.
<?php // форматирование данных в соответствии с RFC 2045 $new_string = chunk_split(base64_encode($data)); ?>
count_chars()
Возвращает информацию о символах, входящих в строку.
<?php $data = "Two Ts and one F."; foreach (count_chars($data, 1) as $i => $val) { echo "\"" , chr($i) , "\" встречается в строке $val раз(а).\n"; } ?>
Документация по count_chars.
md5_file()
Функция возвращает MD5-хэш файла.
<?php $file = 'php-5.3.0alpha2-Win32-VC9-x64.zip'; echo 'MD5-хэш файла ' . $file . ': ' . md5_file($file); ?>
Документация по md5_file. Кстати, есть похожая функция sha1_file(), но с другим алгоритмом шифрования.
money_format()
Функция форматирует число как денежную величину.
<?php $number = 1234.56; // международный формат в локали en_US setlocale(LC_MONETARY, 'en_US'); echo money_format('%i', $number) . "\n"; // USD 1,234.56 // Итальянский национальный формат с 2 знаками после запятой setlocale(LC_MONETARY, 'it_IT'); echo money_format('%.2n', $number) . "\n"; // Eu 1.234,56 // Использование отрицательных чисел $number = -1234.5672; // национальный формат США, с использованием скобок для // отрицательных чисел и 10 знаков до запятой setlocale(LC_MONETARY, 'en_US'); echo money_format('%(#10n', $number) . "\n"; // ($ 1,234.57) // подобно предыдущему, но с добавлением 2 знаков после запятой // и '*' в качестве символа заполнения echo money_format('%=*(#10.2n', $number) . "\n"; // ($********1,234.57) // Выравнивание влево, ширина 14 знаков, 8 знаков до запятой, // 2 знака после запятой, без разбиения на группы // с использованием международного формата в локали de_DE. setlocale(LC_MONETARY, 'de_DE'); echo money_format('%=*^-14#8.2i', 1234.56) . "\n"; // Eu 1234,56**** // А теперь добавим текст перед и после описанием формата setlocale(LC_MONETARY, 'en_GB'); $fmt = 'Итоговая сумма: %i (после 10%% скидки)'; echo money_format($fmt, 1234.56) . "\n"; // Итоговая сумма: GBP 1,234.56 (после 10% скидки) ?>
А вот и документация по money_format.
parse_str()
Как вы могли сами догадаться, функция разбирает строку в переменные.
<?php $str = "first=value&arr[]=foo+bar&arr[]=baz"; // Рекомендуемый подход parse_str($str, $output); echo $output['first']; // value echo $output['arr'][0]; // foo bar echo $output['arr'][1]; // baz // НЕ РЕКОМЕНДУЕТСЯ parse_str($str); echo $first; // value echo $arr[0]; // foo bar echo $arr[1]; // baz ?>
Документация по parse_str.
quotemeta()
Экранирует специальные символы.
<?php $str = "Hello world. (can you hear me?)"; echo quotemeta($str); ?>
Документация по quotemeta.
str_pad()
Функция дополняет строку другой строкой до заданной длины.
<?php $input = "Alien"; echo str_pad($input, 10); // выводит "Alien " echo str_pad($input, 10, "-=", STR_PAD_LEFT); // выводит "-=-=-Alien" echo str_pad($input, 10, "_", STR_PAD_BOTH); // выводит "__Alien___" echo str_pad($input, 6, "___"); // выводит "Alien_" echo str_pad($input, 3, "*"); // выводит "Alien" ?>
Документация по str_pad. Обратите еще внимание на функцию str_repeat().
Мы рассмотрели наиболее интересные и малоиспользуемые функции в PHP. У вас появились вопросы? Пишите свои комментарии.