При работе с PHP очень полезно иметь «набор инструментов» с удобными функциями и фрагментами кода, которые могут сэкономить много времени при необходимости. Сегодня я собираюсь показать вам 10 супер полезных фрагментов кода, о которых вы, вероятно, никогда не слышали.
Обмен текстовыми сообщениями с помощью PHP с использованием API TextMagic
Если по какой-то причине вам необходимо отправлять текстовые сообщения на мобильные телефоны ваших клиентов, вам обязательно стоит взглянуть на TextMagic . Они предоставляют простой API, который позволяет отправлять SMS на мобильные телефоны. Обратите внимание, что услуга TextMagic не является бесплатной.
В приведенном ниже примере показано, как легко отправить SMS-сообщение на мобильный телефон с помощью API TextMagic:
// Include the TextMagic PHP lib require('textmagic-sms-api-php/TextMagicAPI.php'); // Set the username and password information $username = 'myusername'; $password = 'mypassword'; // Create a new instance of TM $router = new TextMagicAPI(array( 'username' => $username, 'password' => $password )); // Send a text message to '999-123-4567' $result = $router->send('Wake up!', array(9991234567), true); // result: Result is: Array ( [messages] => Array ( [19896128] => 9991234567 ) [sent_text] => Wake up! [parts_count] => 1 )
Источник: http://davidwalsh.name/php-text-messaging
Определить местоположение по IP
Вот полезный фрагмент кода для определения местоположения определенного IP. Приведенная ниже функция принимает в качестве параметра один IP-адрес и возвращает его местоположение. Если местоположение не найдено, UNKNOWN
возвращается.
function detect_city($ip) { $default = 'UNKNOWN'; if (!is_string($ip) || strlen($ip) < 1 || $ip == '127.0.0.1' || $ip == 'localhost') $ip = '8.8.8.8'; $curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)'; $url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip); $ch = curl_init(); $curl_opt = array( CURLOPT_FOLLOWLOCATION => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $curlopt_useragent, CURLOPT_URL => $url, CURLOPT_TIMEOUT => 1, CURLOPT_REFERER => 'http://' . $_SERVER['HTTP_HOST'], ); curl_setopt_array($ch, $curl_opt); $content = curl_exec($ch); if (!is_null($curl_info)) { $curl_info = curl_getinfo($ch); } curl_close($ch); if ( preg_match('{<li>City : ([^<]*)</li>}i', $content, $regs) ) { $city = $regs[1]; } if ( preg_match('{<li>State/Province : ([^<]*)</li>}i', $content, $regs) ) { $state = $regs[1]; } if( $city!='' && $state!='' ){ $location = $city . ', ' . $state; return $location; }else{ return $default; } }
Источник: http://snipplr.com/view/48386/detect-location-by-ip-city-state/
Показать исходный код любой веб-страницы
Хотите иметь возможность отображать исходный код любой веб-страницы с нумерацией строк? Вот простой фрагмент кода, чтобы сделать это. Просто измените URL в строке 2 для вашего удобства. Или даже лучше, сделайте красивую функцию в соответствии с вашими потребностями
<?php // display source code $lines = file('http://google.com/'); foreach ($lines as $line_num => $line) { // loop thru each line and prepend line numbers echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br>\n"; }
Источник: http://perishablepress.com/code-snippets/#code-snippets_php
Проверьте, является ли сервер HTTPS
Мой скрипт работает на HTTPS-сервере? Хороший вопрос. Этот удобный фрагмент может дать вам ответ. Ничего сложного вообще!
if ($_SERVER['HTTPS'] != "on") { echo "This is not HTTPS"; }else{ echo "This is HTTPS"; }
Источник: http://snipplr.com/view/62373/check-if-url-is-https-in-php/
Отображать количество поклонников Facebook в полном тексте
Хотите показать, сколько поклонников Facebook у вас есть, в полном тексте, в своем блоге? Это очень легко, используя следующий фрагмент:
function fb_fan_count($facebook_name){ // Example: https://graph.facebook.com/digimantra $data = json_decode(file_get_contents("https://graph.facebook.com/".$facebook_name)); echo $data->likes; }
Источник: http://www.digimantra.com/
Определить доминирующий цвет изображения
Этот код будет очень полезен для людей, управляющих изображениями или фотографиями на сайте. С его помощью вы можете проанализировать любое изображение и получить его доминирующий цвет (R, G или B).
$i = imagecreatefromjpeg("image.jpg"); for ($x=0;$x<imagesx($i);$x++) { for ($y=0;$y<imagesy($i);$y++) { $rgb = imagecolorat($i,$x,$y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> & 0xFF; $b = $rgb & 0xFF; $rTotal += $r; $gTotal += $g; $bTotal += $b; $total++; } } $rAverage = round($rTotal/$total); $gAverage = round($gTotal/$total); $bAverage = round($bTotal/$total);
Источник: http://forums.devnetwork.net/viewtopic.php?t=39594
Получить информацию об использовании вашей памяти
Чтобы оптимизировать ваши скрипты, вы, возможно, захотите узнать, сколько ОЗУ они используют на вашем сервере. Этот фрагмент будет проверять память и затем печатать начальное, конечное и пиковое использование.
echo "Initial: ".memory_get_usage()." bytes \n"; /* prints Initial: 361400 bytes */ // let's use up some memory for ($i = 0; $i < 100000; $i++) { $array []= md5($i); } // let's remove half of the array for ($i = 0; $i < 100000; $i++) { unset($array[$i]); } echo "Final: ".memory_get_usage()." bytes \n"; /* prints Final: 885912 bytes */ echo "Peak: ".memory_get_peak_usage()." bytes \n"; /* prints Peak: 13687072 bytes */
Источник: http://net.tutsplus.com/tutorials/php/9-useful-php…
Сжатие данных с помощью gzcompress ()
При работе со строками некоторые нередко бывают очень длинными. Используя gzcompress()
функцию, строки могут быть сжаты. Чтобы распаковать его, просто вызовите gzuncompress()
функцию, как показано ниже:
$string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut elit id mi ultricies adipiscing. Nulla facilisi. Praesent pulvinar, sapien vel feugiat vestibulum, nulla dui pretium orci, non ultricies elit lacus quis ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pretium ullamcorper urna quis iaculis. Etiam ac massa sed turpis tempor luctus. Curabitur sed nibh eu elit mollis congue. Praesent ipsum diam, consectetur vitae ornare a, aliquam a nunc. In id magna pellentesque tellus posuere adipiscing. Sed non mi metus, at lacinia augue. Sed magna nisi, ornare in mollis in, mollis sed nunc. Etiam at justo in leo congue mollis. Nullam in neque eget metus hendrerit scelerisque eu non enim. Ut malesuada lacus eu nulla bibendum id euismod urna sodales. "; $compressed = gzcompress($string); echo "Original size: ". strlen($string)."\n"; /* prints Original size: 800 */ echo "Compressed size: ". strlen($compressed)."\n"; /* prints Compressed size: 418 */ // getting it back $original = gzuncompress($compressed);
Источник: http://net.tutsplus.com/tutorials/php/9-useful-php…
Whois-запрос с использованием PHP
Если вам нужно получить информацию whois для определенного домена, почему бы не использовать PHP для этого? Следующая функция принимает имя домена в качестве параметра, а затем отображает информацию whois, связанную с доменом.
function whois_query($domain) { // fix the domain name: $domain = strtolower(trim($domain)); $domain = preg_replace('/^http:\/\//i', '', $domain); $domain = preg_replace('/^www\./i', '', $domain); $domain = explode('/', $domain); $domain = trim($domain[0]); // split the TLD from domain name $_domain = explode('.', $domain); $lst = count($_domain)-1; $ext = $_domain[$lst]; // You find resources and lists // like these on wikipedia: // // http://de.wikipedia.org/wiki/Whois // $servers = array( "biz" => "whois.neulevel.biz", "com" => "whois.internic.net", "us" => "whois.nic.us", "coop" => "whois.nic.coop", "info" => "whois.nic.info", "name" => "whois.nic.name", "net" => "whois.internic.net", "gov" => "whois.nic.gov", "edu" => "whois.internic.net", "mil" => "rs.internic.net", "int" => "whois.iana.org", "ac" => "whois.nic.ac", "ae" => "whois.uaenic.ae", "at" => "whois.ripe.net", "au" => "whois.aunic.net", "be" => "whois.dns.be", "bg" => "whois.ripe.net", "br" => "whois.registro.br", "bz" => "whois.belizenic.bz", "ca" => "whois.cira.ca", "cc" => "whois.nic.cc", "ch" => "whois.nic.ch", "cl" => "whois.nic.cl", "cn" => "whois.cnnic.net.cn", "cz" => "whois.nic.cz", "de" => "whois.nic.de", "fr" => "whois.nic.fr", "hu" => "whois.nic.hu", "ie" => "whois.domainregistry.ie", "il" => "whois.isoc.org.il", "in" => "whois.ncst.ernet.in", "ir" => "whois.nic.ir", "mc" => "whois.ripe.net", "to" => "whois.tonic.to", "tv" => "whois.tv", "ru" => "whois.ripn.net", "org" => "whois.pir.org", "aero" => "whois.information.aero", "nl" => "whois.domain-registry.nl" ); if (!isset($servers[$ext])){ die('Error: No matching nic server found!'); } $nic_server = $servers[$ext]; $output = ''; // connect to whois server: if ($conn = fsockopen ($nic_server, 43)) { fputs($conn, $domain."\r\n"); while(!feof($conn)) { $output .= fgets($conn,128); } fclose($conn); } else { die('Error: Could not connect to ' . $nic_server . '!'); } return $output; }
Источник: http://www.jonasjohn.de/snippets/php/whois-query.htm
Почтовые ошибки PHP вместо отображения
По умолчанию на большинстве серверов отображается сообщение об ошибке, когда в одном из ваших сценариев произошла ошибка. В целях безопасности вы можете захотеть получить электронное письмо с ошибкой, а не показывать его широкой публике.
<?php // Our custom error handler 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 the error to someone... error_log($email, 1, '[email protected]', $headers); // Make sure that you decide how to respond to errors (on the user's side) // Either echo an error message, or kill the entire project. Up to you... // The code below ensures that we only "die" if the error was more than // just a NOTICE. if ( ($number !== E_NOTICE) && ($number < 2048) ) { die("There was an error. Please try again later."); } } // We should use our custom function to handle errors. set_error_handler('nettuts_error_handler'); // Trigger an error... (var doesn't exist) echo $somevarthatdoesnotexist;
Источник: http://net.tutsplus.com/tutorials/php/quick-tip…