10 классных PHP функций и сниппетов
У каждого веб разработчика должна быть своя коллекция полезных функций или сниппетов, которые он может использовать в своих проектах. Сегодня мы рассмотрим 10 подобных примеров, которые нам считаются полезными.
Фильтрация данных перед вставкой в базу
Когда речь идёт о работе с БД, вы должны быть готовы отбиваться от SQL инъекций и прочих попыток вставить вредоносные данные. Функция, приведённая ниже, фильтрует данные, предотвращая от целого ряда опасностей:
function cleanInput($input) { $search = array( '@<script[^>]*?>.*?</script>@si', // javascript '@<[\/\!]*?[^<>]*?>@si', // HTML теги '@<style[^>]*?>.*?</style>@siU', // теги style '@<![\s\S]*?--[ \t\n\r]*>@' // многоуровневые комментарии ); $output = preg_replace($search, '', $input); return $output; } ?> <?php function sanitize($input) { if (is_array($input)) { foreach($input as $var=>$val) { $output[$var] = sanitize($val); } } else { if (get_magic_quotes_gpc()) { $input = stripslashes($input); } $input = cleanInput($input); $output = mysql_real_escape_string($input); } return $output; }
Пример использования:
<?php $bad_string = "Hi! <script src='http://www.evilsite.com/bad_script.js'></script> It's a good day!"; $good_string = sanitize($bad_string); // $good_string returns "Hi! It\'s a good day!" // Also use for getting POST/GET variables $_POST = sanitize($_POST); $_GET = sanitize($_GET); ?>
Источник: http://css-tricks.com/snippets/php/sanitize-database-inputs/
Вычисляем расстояние между двумя точками
Следующая функция предназначена для вычисления расстояния между двумя точками, в зависимости от их координат.
function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2) { $theta = $longitude1 - $longitude2; $miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); $miles = acos($miles); $miles = rad2deg($miles); $miles = $miles * 60 * 1.1515; $feet = $miles * 5280; $yards = $feet / 3; $kilometers = $miles * 1.609344; $meters = $kilometers * 1000; return compact('miles','feet','yards','kilometers','meters'); }
Пример:
$point1 = array('lat' => 40.770623, 'long' => -73.964367); $point2 = array('lat' => 40.758224, 'long' => -73.917404); $distance = getDistanceBetweenPointsNew($point1['lat'], $point1['long'], $point2['lat'], $point2['long']); foreach ($distance as $unit => $value) { echo $unit.': '.number_format($value,4).'<br />'; }
Источник: http://www.inkplant.com/code/calculate-the-distance-between-two-points.php
Извлечение всех твитов по специальному хэштегу
Лёгкий способ извлечения твитов по хэштегу с помощью расширения cURL. В следующем примере используем хэштег #cat:
function getTweets($hash_tag) { $url = 'http://search.twitter.com/search.atom?q='.urlencode($hash_tag) ; echo "<p>Connecting to <strong>$url</strong> ...</p>"; $ch = curl_init($url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE); $xml = curl_exec ($ch); curl_close ($ch); $affected = 0; $twelement = new SimpleXMLElement($xml); foreach ($twelement->entry as $entry) { $text = trim($entry->title); $author = trim($entry->author->name); $time = strtotime($entry->published); $id = $entry->id; echo "<p>Tweet from ".$author.": <strong>".$text."</strong> <em>Posted ".date('n/j/y g:i a',$time)."</em></p>"; } return true ; } getTweets('#cats');
Источник: http://www.inkplant.com/code/get-twitter-posts-by-hashtag.php
Применяем классы для чётных и нечётных элементов
При генерации различного рода списков и таблиц при помощи PHP, иногда возникает необходимость задавать специальный класс чётным и нечётным элементам для их оформления через CSS.
В следующем примере, элементам будут заданы классы .example-class0 и .example-class1:
<div class="example-class<?php echo ($xyz++%2); ?>">
Источник: http://css-tricks.com/snippets/php/applying-evenodd-classes/
Отправка логов ошибок себе на email
Почему бы не написать свой собственный обработчик ошибок и отправлять их текст, в случае возникновения, себе на email:
<?php function nettuts_error_handler($number, $message, $file, $line, $vars){ $email = " <p>An error ($number) occurred on line <strong>$line</strong> and in the <strong>file: $file.</strong> <p> $message </p>"; $email .= "<pre>" . print_r($vars, 1) . "</pre>"; $headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // отправка email-а error_log($email, 1, ' you@youremail.com ', $headers); // останавливаем скрипт при возникновении ошибки // если она не NOTICE. if ( ($number !== E_NOTICE) && ($number < 2048) ) { die("There was an error. Please try again later."); } } // назначаем собственный обработчик. set_error_handler('nettuts_error_handler'); // генерируем ошибку... (переменной не существует) echo $somevarthatdoesnotexist;
Источник: http://net.tutsplus.com/tutorials/php/quick-tip-email-error-logs-to-yourself-with-php/
Автоматическое создание переменных, имя которых совпадает с ключами в $_POST
Данный сниппет очень полезен, если вы часто работаете с POST данными. Всё что от вас требуется, в этом случае, - массив с именами ключей, которые вы хотите извлечь. В результате работы сниппета, переменные будут созданы автоматически. Если ключ не будет найден в POST, то значение переменной будет NULL. Обычно мы пишем так:
$username=$_POST["username"]; $age=$_POST["age"]; …
С помощью данного сниппета, можем сделать так:
<?php $expected=array('username','age','city','street'); foreach($expected as $key){ if(!empty($_POST[$key])){ ${key}=$_POST[$key]; } else{ ${key}=NULL; } } ?>
Загрузка и сохранение изображения на ваш сервер
Вот простой, но очень полезный сниппет, который поможет вам загрузить изображение по его URL и сохранить его на вашем сервере:
$image = file_get_contents('http://www.url.com/image.jpg'); file_put_contents('/images/image.jpg', $image); //сохраняем изображение на вашем сервере
Источник: http://www.catswhocode.com/blog/snippets/download-save-a-remote-image-on-your-server-using-php
Создание data uri
Через data uri мы можем преобразовывать такие элементы, как html/css/js, для уменьшения http запросов к сторонним ресурсам. Вот, как мы можем это сделать через PHP:
function data_uri($file, $mime) { $contents=file_get_contents($file); $base64=base64_encode($contents); echo "data:$mime;base64,$base64"; }
Источник: http://css-tricks.com/snippets/php/create-data-uris/
Определяем язык браузера
Если вы создаёте многоязычный сайт, то неплохо было бы знать язык браузера и, в зависимости от этого, отобразить сайт в том или ином виде.
function get_client_language($availableLanguages, $default='en'){ if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { $langs=explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); foreach ($langs as $value){ $choice=substr($value,0,2); if(in_array($choice, $availableLanguages)){ return $choice; } } } return $default; }
Источник: http://snipplr.com/view/12631/detect-browser-language/php-detect-browser-language
Получаем размер файла
Для получения размера файла можете воспользоваться следующей функцией:
<?php function file_size($url){ $size = filesize($url); if($size >= 1073741824){ $fileSize = round($size/1024/1024/1024,1) . 'GB'; }elseif($size >= 1048576){ $fileSize = round($size/1024/1024,1) . 'MB'; }elseif($size >= 1024){ $fileSize = round($size/1024,1) . 'KB'; }else{ $fileSize = $size . ' bytes'; } return $fileSize; } echo file_size('/myfile/image.jpg'); ?>
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/4H4tho4eZvs/lessons.php


Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2025-04-08 » Горшочек, рисуй: 10 бесплатных сервисов для генерации картинок
- 2025-04-08 » SEO-продвижение в 2025 году: 15 трендов, без которых ТОП не светит
- 2025-03-14 » SPF-запись
- 2025-03-07 » SEO на маркетплейсах: как оптимизировать карточку товара для поисковой выдачи
- 2025-02-18 » Топ-10 бесплатных нейросетей для генерации изображений: лучшие ии генераторы 2024 года
- 2025-02-11 » Критическая уязвимость в 1С-Битрикс
- 2025-02-11 » Google Search Console: руководство для начинающих вебмастеров
- 2025-02-11 » Методы измерения результативности рекламных кампаний: плюсы и минусы
- 2025-02-11 » Тренды SEO в 2025 году
- 2025-02-10 » Свой Google в локалке. Ищем иголку в стоге сена
- 2025-01-29 » SEO — это комплексная работа. Шесть главных факторов ранжирования сайтов
- 2025-01-29 » Гайд для главной страницы e-commerce сайта: как оформить, чтобы повысить конверсию
- 2025-01-20 » Krea AI выпустила бесплатную функцию преобразования изображений в 3D-объекты — их можно вращать и вписывать в фотографии
- 2025-01-19 » Отзывы на Яндекс Картах: как пройти модерацию
- 2025-01-15 » Топ-6 лучших российских нейросетей, в которых можно генерировать тексты и изображения бесплатно и без VPN
- 2025-01-14 » 15 бесплатных способов узнать, чем интересуется ваша аудитория
- 2025-01-11 » Бездепозитные бонусы в казино за регистрацию с выводом: особенности и возможности получения
- 2025-01-09 » Новая модель LAM способна выполнять задачи в Word
- 2024-12-26 » Универсальный промпт для нейросети: как выжать максимум из ChatGPT, YandexGPT, Gemini, Claude в 2025
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
Жизнь подобна универмагу: в ней находишь всё, кроме того, что ищешь Кроткий Эмиль - (1892—1963) - русский поэт–сатирик, юморист и афорист |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.
Или напишите нам в WhatsApp
Или напишите нам в WhatsApp