Малоизвестные функции на 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. У вас появились вопросы? Пишите свои комментарии.

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

SoladieM

С детства увлекаюсь интернет-технологиями и программированием. Нравится работать с информацией, узнавать что-то новое и интересное для себя. Привлекают необычные проекты и разработки. Нахожусь в постоянном поиске и реализации идей от простого к сложному.

Добавить комментарий

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: