It’s always good to have a magic tool when writing code! Below is a collection of 50+ PHP code snippets to help you develop your PHP projects.


These PHP snippets are also very helpful and easy to learn for PHP beginners, so let’s get started






1. Send SMS








When developing Web or mobile applications, it is common to encounter the need to send SMS to users, either for login reasons or to send messages. The following PHP code implements the SMS function.


In order to send SMS in any language, you need an SMS Gateway. Most SMS will provide an API, which is used here
MSG91Act as SMS Gateway.


function send_sms($mobile,$msg)
{
$authKey = "XXXXXXXXXXX";
date_default_timezone_set("Asia/Kolkata");
$date = strftime("%Y-%m-%d %H:%M:%S");
//Multiple mobiles numbers separated by comma
$mobileNumber = $mobile;
           
//Sender ID,While using route4 sender id should be 6 characters long.
$senderId = "IKOONK";
           
//Your message to send, Add URL encoding here.
$message = urlencode($msg);
           
//Define route 
$route = "template";
//Prepare you post parameters
$postData = array(
    'authkey' => $authKey,
    'mobiles' => $mobileNumber,
    'message' => $message,
    'sender' => $senderId,
    'route' => $route
);
           
//API URL
$url="https://control.msg91.com/sendhttp.php";
           
// init the resource
$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $postData
    //,CURLOPT_FOLLOWLOCATION => true
));
           
           
//Ignore SSL certificate verification
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
           
           
//get response
$output = curl_exec($ch);
//Print error if any
if(curl_errno($ch))
{
    echo 'error:' . curl_error($ch);
}
           
curl_close($ch);
}

$authKey = “XXXXXXXXXXX”; You need to enter your password, “$senderId = “IKOONK”; I need you to enter your SenderID. You need to specify a country code when entering a mobile number (for example, 1 for the United States, 91 for India).


Grammar:


<? php $message = "Hello World"; $mobile = "918112998787"; send_sms($mobile,$message); ? >

2. Send emails using Mandrill



MandrillSMTP is a powerful SMTP provider. Developers prefer to use a third-party SMTP provider for better delivery.


In the following function, you need to add the
Mandrill.php”In the same folder as a PHP file, so you can use TA to send emails.


function send_email($to_email,$subject,$message1) { require_once 'Mandrill.php'; $apikey = 'XXXXXXXXXX'; //specify your api key here $mandrill = new Mandrill($apikey); $message = new stdClass(); $message->html = $message1; $message->text = $message1; $message->subject = $subject; $message->from_email = "[email protected]"; //Sender Email $message->from_name = "KOONK"; //Sender Name $message->to = array(array("email" => $to_email)); $message->track_opens = true; $response = $mandrill->messages->send($message); }

$apikey = ‘XXXXXXXXXX’; Specify your API key here specify your API key (obtained from the Mandrill account).


Grammar:


<? php $to = "[email protected]"; $subject = "This is a test email"; $message = "Hello World!" ; send_email($to,$subject,$message); ? >

For best results, follow the Mandrill tutorial to configure DNS.






3. PHP functions: block SQL injection



SQL injectionOr SQLi’s common methods of attacking websites. Using the code below can help you prevent these tools.


function clean($input)
{
    if (is_array($input))
    {
        foreach ($input as $key => $val)
         {
            $output[$key] = clean($val);
            // $output[$key] = $this->clean($val);
        }
    }
    else
    {
        $output = (string) $input;
        // if magic quotes is on then use strip slashes
        if (get_magic_quotes_gpc()) 
        {
            $output = stripslashes($output);
        }
        // $output = strip_tags($output);
        $output = htmlentities($output, ENT_QUOTES, 'UTF-8');
    }
// return the clean text
    return $output;
}

Grammar:


<? php $text = "<script>alert(1)</script>"; $text = clean($text); echo $text; ? >

4. Check the user location


Using the following function, you can detect which city the user is visiting your site in


function detect_city($ip) { $default = 'UNKNOWN'; $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; }}

Grammar:


<? php $ip = $_SERVER['REMOTE_ADDR']; $city = detect_city($ip); echo $city; ? >



5. Obtain the Web page source code


You can get the HTML code for any Web page using the following functions





function display_sourcecode($url) { $lines = file($url); $output = ""; foreach ($lines as $line_num => $line) { // loop thru each line and prepend line numbers $output.= "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "\n"; }}

Grammar:


<? php $url = "http://blog.koonk.com"; $source = display_sourcecode($url); echo $source; ? >



6. Count people who like your Facebook page


function fb_fan_count($facebook_name)
{
    $data = json_decode(file_get_contents("https://graph.facebook.com/".$facebook_name));
    $likes = $data->likes;
    return $likes;
}

Grammar:


<? php $page = "koonktechnologies"; $count = fb_fan_count($page); echo $count; ? >



7. Determine the dominant color of any image


function dominant_color($image) { $i = imagecreatefromjpeg($image); 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); }



8. Whois query


Use the following functions to get the full details of any domain name user





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; }


Grammar:





<? php $domain = "http://www.blog.koonk.com"; $result = whois_query($domain); print_r($result); ? >



9. Verify the email address


Sometimes, when filling out a form on a website, the user may enter the wrong email address, this function can verify that the email address is valid.


function is_validemail($email) { $check = 0; if(filter_var($email,FILTER_VALIDATE_EMAIL)) { $check = 1; } return $check; } Syntax: <? php $email = "[email protected]"; $check = is_validemail($email); echo $check; // If the output is 1, then email is valid. ? >

10. Obtain the real IP address of the user


function getRealIpAddr() { if (! emptyempty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (! emptyempty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip=$_SERVER['REMOTE_ADDR']; } return $ip; }

Grammar:





<? php $ip = getRealIpAddr(); echo $ip; ? >



11. Transform urls: From strings to hyperlinks


If you’re developing a forum, blog, or regular form submission, many times you’ll need users to visit a website. Using this function, the URL string is automatically converted to a hyperlink.





function makeClickableLinks($text) { $text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)', '<a href="\1">\1</a>', $text); $text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1<a href="http://\2">\2</a>', $text); (_ $text = the eregi_replace (' (0-9 a - z -] + @ ([0-9 a-z] [0-9 a-z -] +.) + [a-z] {2, 3}) ', '< a href = "mailto: \ 1" > 1 < / a > \', $text); Return $text;}  <?php $text = "This is my first post on http://blog.koonk.com"; $text = makeClickableLinks($text); echo $text; ?>



12. Block multiple ips from accessing your site


This code snippet makes it easy for you to block certain IP addresses from accessing your site





if ( ! File_exists (' blocked_ips. TXT)) {$deny_ips = array (' 127.0.0.1 ', '192.168.1.1', '83.76.27.9', '192.168.1.163'); } else { $deny_ips = file('blocked_ips.txt'); } // read user ip adress: $ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : ''; // search current IP in $deny_ips array if ( (array_search($ip, $deny_ips))! == FALSE ) { // address is blocked: echo 'Your IP adress ('.$ip.') was blocked! '; exit; }



13. Mandatory file downloads


If you need to download a specific file without opening a new window, the following code snippet can help.





function force_download($file) 
{ 
    $dir      = "../log/exports/"; 
    if ((isset($file))&&(file_exists($dir.$file))) { 
       header("Content-type: application/force-download"); 
       header('Content-Disposition: inline; filename="' . $dir.$file . '"'); 
       header("Content-Transfer-Encoding: Binary"); 
       header("Content-length: ".filesize($dir.$file)); 
       header('Content-Type: application/octet-stream'); 
       header('Content-Disposition: attachment; filename="' . $file . '"'); 
       readfile("$dir$file"); 
    } else { 
       echo "No file selected"; 
    } 
}


Grammar:





<php force_download("image.jpg"); ? >



Create JSON data


Using the following PHP snippet to create JSON data, you can easily create Web services for mobile applications





$json_data = array ('id'=>1,'name'=>"Mohit");
echo json_encode($json_data);



15. Compress the ZIP file


Zip files can be compressed instantly using the following PHP snippet





function create_zip($files = array(),$destination = '',$overwrite = false) { //if the zip file already exists and overwrite is false, return false if(file_exists($destination) && ! $overwrite) { return false; } //vars $valid_files = array(); //if files were passed in... if(is_array($files)) { //cycle through each file foreach($files as $file) { //make sure the file exists if(file_exists($file)) { $valid_files[] = $file; } } } //if we have good files... if(count($valid_files)) { //create the archive $zip = new ZipArchive(); if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) ! == true) { return false; } //add the files foreach($valid_files as $file) { $zip->addFile($file,$file); } //debug //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status; //close the zip -- done! $zip->close(); //check to make sure the file exists return file_exists($destination); } else { return false; }} syntax: <? php $files=array('file1.jpg', 'file2.jpg', 'file3.gif'); create_zip($files, 'myzipfile.zip', true); ? >



16. Decompress the files





function unzip($location,$newLocation) { if(exec("unzip $location",$arr)){ mkdir($newLocation); for($i = 1; $i< count($arr); $i++){ $file = trim(preg_replace("~inflating: ~","",$arr[$i])); copy($location.'/'.$file,$newLocation.'/'.$file); unlink($location.'/'.$file); } return TRUE; }else{ return FALSE; }}





Grammar:





<? php unzip('test.zip','unziped/test'); //File would be unzipped in unziped/test folder ? >



17. Zoom in and out





function resize_image($filename, $tmpname, $xmax, $ymax)  
{  
    $ext = explode(".", $filename);  
    $ext = $ext[count($ext)-1];  
        
    if($ext == "jpg" || $ext == "jpeg")  
        $im = imagecreatefromjpeg($tmpname);  
    elseif($ext == "png")  
        $im = imagecreatefrompng($tmpname);  
    elseif($ext == "gif")  
        $im = imagecreatefromgif($tmpname);  
            
    $x = imagesx($im);  
    $y = imagesy($im);  
            
    if($x <= $xmax && $y <= $ymax)  
        return $im;  
        
    if($x >= $y) {  
        $newx = $xmax;  
        $newy = $newx * $y / $x;  
    }  
    else {  
        $newy = $ymax;  
        $newx = $x / $y * $newy;  
    }  
            
    $im2 = imagecreatetruecolor($newx, $newy);  
    imagecopyresized($im2, $im, 0, 0, 0, 0, floor($newx), floor($newy), $x, $y);  
    return $im2;   
}



18. Use mail() to send messages

 
Earlier we provided a PHP snippet of how to use Mandrill to send mail, but if you don’t want to use a third party service, you can use the following PHP snippet.





function send_mail($to,$subject,$body) { $headers = "From: KOONK\r\n"; $headers .= "Reply-To: [email protected]\r\n"; $headers .= "Return-Path: [email protected]\r\n"; $headers .= "X-Mailer: PHP5\n"; $headers.= 'MIME-Version: 1.0'. "\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; mail($to,$subject,$body,$headers); } Syntax: <? php $to = "[email protected]"; $subject = "This is a test mail"; $body = "Hello World!" ; send_mail($to,$subject,$body); ? >

Convert seconds to days, hours, and minutes


function secsToStr($secs) { if($secs>=86400){$days=floor($secs/86400); $secs=$secs%86400; $r=$days.' day'; if($days<>1){$r.='s'; }if($secs>0){$r.=', '; }} if($secs>=3600){$hours=floor($secs/3600); $secs=$secs%3600; $r.=$hours.' hour'; if($hours<>1){$r.='s'; }if($secs>0){$r.=', '; }} if($secs>=60){$minutes=floor($secs/60); $secs=$secs%60; $r.=$minutes.' minute'; if($minutes<>1){$r.='s'; }if($secs>0){$r.=', '; }} $r.=$secs.' second'; if($secs<>1){$r.='s'; } return $r; }

Grammar:


<? php $seconds = "56789"; $output = secsToStr($seconds); echo $output; ? >

20. Database connection


Connect to MySQL database


<? php $DBNAME = 'koonk'; $HOST = 'localhost'; $DBUSER = 'root'; $DBPASS = 'koonk'; $CONNECT = mysql_connect($HOST,$DBUSER,$DBPASS); if(! $CONNECT) { echo 'MySQL Error: '.mysql_error(); } $SELECT = mysql_select_db($DBNAME); if(! $SELECT) { echo 'MySQL Error: '.mysql_error(); }? >

21. List of contents


Use the following PHP snippet to list all files and folders in one directory





function list_files($dir) { if(is_dir($dir)) { if($handle = opendir($dir)) { while(($file = readdir($handle)) ! == false) { if($file ! = "." && $file ! = ".." && $file ! = "Thumbs.db"/*pesky windows, images.. */) { echo '<a target="_blank" href="'.$dir.$file.'">'.$file.'</a>'."\n"; } } closedir($handle); }}}


Grammar:





<? php list_files("images/"); //This will list all files of images folder ? >



22. Detect user language


Use the following PHP snippet to detect the language used by the user’s browser





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; }



23. View the CSV file





function readCSV($csvFile){ $file_handle = fopen($csvFile, 'r'); while (! feof($file_handle) ) { $line_of_text[] = fgetcsv($file_handle, 1024); } fclose($file_handle); return $line_of_text; } Syntax: <? php $csvFile = "test.csv"; $csv = readCSV($csvFile); $a = csv[0][0]; // This will get value of Column 1 & Row 1 ? >



24. Create CSV files from PHP data





function generateCsv($data, $delimiter = ',', $enclosure = '"') { $handle = fopen('php://temp', 'r+'); foreach ($data as $line) { fputcsv($handle, $line, $delimiter, $enclosure); } rewind($handle); while (! feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); return $contents; } Syntax: <? php $data[0] = "apple"; $data[1] = "oranges"; generateCsv($data, $delimiter = ',', $enclosure = '"'); ? >



Parse XML data





$xml_string="<? The XML version = '1.0'? > <moleculedb> <molecule name='Benzine'> <symbol>ben</symbol> <code>A</code> </molecule> <molecule name='Water'> <symbol>h2o</symbol> <code>K</code> </molecule> </moleculedb>"; //load the xml string using simplexml function $xml = simplexml_load_string($xml_string); //loop through the each node of molecule foreach ($xml->molecule as $record) { //attribute are accessted by echo $record['name'], ' '; //node are accessted by -> operator echo $record->symbol, ' '; echo $record->code, ''; }



Parse JSON data





$json_string='{"id":1,"name":"rolf","country":"russia","office":["google","oracle"]} ';
$obj=json_decode($json_string);
//print the parsed data
echo $obj->name; //displays rolf
echo $obj->office[0]; //displays google






27. Obtain the current page URL


This PHP snippet can help you redirect the user to the page they were browsing





function current_url()
{
$url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$validURL = str_replace("&", "&", $url);
return validURL;
}








Grammar:





<? php echo "Currently you are on: ".current_url(); ? >



28. Get the latest tweets from any Twitter account





function my_twitter($username) { $no_of_tweets = 1; $feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=" . $no_of_tweets; $xml = simplexml_load_file($feed); foreach($xml->children() as $child) { foreach ($child as $value) { if($value->getName() == "link") $link = $value['href']; if($value->getName() == "content") { $content = $value . ""; echo '<p class="twit">'.$content.' <a class="twt" href="'.$link.'" title=""> </a></p>'; }}}} syntax: <? php $handle = "koonktech"; my_twitter($handle); ? >



29. Number of forwards


Use this PHP snippet to check how many retweets your page URL has





function tweetCount($url) { $content = file_get_contents("http://api.tweetmeme.com/url_info?url=".$url); $element = new SimpleXmlElement($content); $retweets = $element->story->url_count; if($retweets){ return $retweets; } else { return 0; }} syntax: <? php $url = "http://blog.koonk.com"; $count = tweetCount($url); return $count; ? >



Calculate the difference between the two dates





<? php $date1 = date( 'Y-m-d' ); $date2 = "2015-12-04"; $diff = abs(strtotime($date2) - strtotime($date1)); $years = floor($diff / (365*60*60*24)); $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24)); $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); printf("%d years, %d months, %d days\n", $years, $months, $days); -------------------------------------------------------- OR $date1 = new DateTime("2007-03-24"); $date2 = new DateTime("2009-06-26"); $interval = $date1->diff($date2); echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days "; // shows the total amount of days (not divided into years, months and days like above) echo "difference " . $interval->days . " days "; -------------------------------------------------------- OR /** * Calculate differences between two dates with precise semantics. Based on PHPs DateTime::diff() * implementation by Derick Rethans. Ported to PHP by Emil H, 2011-05-02. No rights reserved. * * See here for original code: * http://svn.php.net/viewvc/php/php-src/trunk/ext/date/lib/tm2unixtime.c?revision=302890&view=markup * http://svn.php.net/viewvc/php/php-src/trunk/ext/date/lib/interval.c?revision=298973&view=markup */ function _date_range_limit($start, $end, $adj, $a, $b, $result) { if ($result[$a] < $start) { $result[$b] -= intval(($start - $result[$a] - 1) / $adj) + 1; $result[$a] += $adj * intval(($start - $result[$a] - 1) / $adj + 1); } if ($result[$a] >= $end) { $result[$b] += intval($result[$a] / $adj); $result[$a] -= $adj * intval($result[$a] / $adj); } return $result; } function _date_range_limit_days($base, $result) { $days_in_month_leap = array(31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); $days_in_month = array(31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); _date_range_limit(1, 13, 12, "m", "y", &$base); $year = $base["y"]; $month = $base["m"]; if (! $result["invert"]) { while ($result["d"] < 0) { $month--; if ($month < 1) { $month += 12; $year--; } $leapyear = $year % 400 == 0 || ($year % 100 ! = 0 && $year % 4 == 0); $days = $leapyear ? $days_in_month_leap[$month] : $days_in_month[$month]; $result["d"] += $days; $result["m"]--; } } else { while ($result["d"] < 0) { $leapyear = $year % 400 == 0 || ($year % 100 ! = 0 && $year % 4 == 0); $days = $leapyear ? $days_in_month_leap[$month] : $days_in_month[$month]; $result["d"] += $days; $result["m"]--; $month++; if ($month > 12) { $month -= 12; $year++; } } } return $result; } function _date_normalize($base, $result) { $result = _date_range_limit(0, 60, 60, "s", "i", $result); $result = _date_range_limit(0, 60, 60, "i", "h", $result); $result = _date_range_limit(0, 24, 24, "h", "d", $result); $result = _date_range_limit(0, 12, 12, "m", "y", $result); $result = _date_range_limit_days(&$base, &$result); $result = _date_range_limit(0, 12, 12, "m", "y", $result); return $result; } /** * Accepts two unix timestamps. */ function _date_diff($one, $two) { $invert = false; if ($one > $two) { list($one, $two) = array($two, $one); $invert = true; } $key = array("y", "m", "d", "h", "i", "s"); $a = array_combine($key, array_map("intval", explode(" ", date("Y m d H i s", $one)))); $b = array_combine($key, array_map("intval", explode(" ", date("Y m d H i s", $two)))); $result = array(); $result["y"] = $b["y"] - $a["y"]; $result["m"] = $b["m"] - $a["m"]; $result["d"] = $b["d"] - $a["d"]; $result["h"] = $b["h"] - $a["h"]; $result["i"] = $b["i"] - $a["i"]; $result["s"] = $b["s"] - $a["s"]; $result["invert"] = $invert ? 1:0; $result["days"] = intval(abs(($one - $two)/86400)); if ($invert) { _date_normalize(&$a, &$result); } else { _date_normalize(&$b, &$result); } return $result; } $date = "2014-12-04 19:37:22"; echo '<pre>'; print_r( _date_diff( strtotime($date), time() ) ); echo '</pre>'; ? >

31. Delete the folder





function Delete($path) { if (is_dir($path) === true) { $files = array_diff(scandir($path), array('.', '.. ')); foreach ($files as $file) { Delete(realpath($path) . '/' . $file); } return rmdir($path); } else if (is_file($path) === true) { return unlink($path); } return false; }


Grammar:





<? php $path = "images/"; Delete($path); // This will delete images folder along with its contents. ? >



32. Search and highlight keywords in strings


function highlighter_text($text, $words) { $split_words = explode( " " , $words ); foreach($split_words as $word) { $color = "#4285F4"; $text = preg_replace("|($word)|Ui" , "<span style=\"color:".$color."; \"><b>$1</b></span>" , $text ); } return $text; }

Grammar:


<? php $string = "I like chocolates and I like apples"; $words = "apple"; echo highlighter_text($string ,$words); ? >









33. Write files


<? $filename = 'blog.csv'; $fp = fopen($filename, 'w'); $output = " Hello "; $output .= " World! "; $output .= "\r\n"; fputs($fp, $output); fclose($fp); ? >



34. Download the image from the URL





function imagefromURL($image,$rename)
{
$ch = curl_init($image);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec ($ch);
curl_close ($ch);
$fp = fopen("$rename",'w');
fwrite($fp, $rawdata); 
fclose($fp);
}


Grammar:





<? php $url = "http://koonk.com/images/logo.png"; $rename = "koonk.png"; imagefromURL($url,$rename); ? >



35. Check whether the URL is valid





function isvalidURL($url) { $check = 0; if (filter_var($url, FILTER_VALIDATE_URL) ! == false) { $check = 1; } return $check; } Syntax: <? php $url = "http://koonk.com"; $check = checkvalidURL($url); echo $check; //if returns 1 then URL is valid. ? >



Generate a QR code





function qr_code($data, $type = "TXT", $size ='150', $ec='L', $margin='0') { $types = array("URL" =--> "http://", "TEL" => "TEL:", "TXT"=>"", "EMAIL" => "MAILTO:"); if(! in_array($type,array("URL", "TEL", "TXT", "EMAIL"))) { $type = "TXT"; } if (! preg_match('/^'.$types[$type].'/', $data)) { $data = str_replace("\\", "", $types[$type]).$data; } $ch = curl_init(); $data = urlencode($data); curl_setopt($ch, CURLOPT_URL, 'http://chart.apis.google.com/chart'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, 'chs='.$size.'x'.$size.'&cht=qr&chld='.$ec.'|'.$margin.'&chl='.$data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $response = curl_exec($ch); curl_close($ch); return $response; }


Grammar:





<? php header("Content-type: image/png"); echo qr_code("http://koonk.com", "URL"); ? >



Calculate the distance between two map coordinates





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'); 
}


Grammar:





<? $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).''; }? >



38. Get all Tweets for a particular hashtag





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); //If you want to see the response from Twitter, uncomment this next part out: //echo "<p>Response:</p>"; //echo "<pre>".htmlspecialchars($xml)."</pre>"; $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 ; }



39. Add th, ST,nd, or RD as a numeric suffix


Friday the 13th
function ordinal($cdnl){ 
    $test_c = abs($cdnl) % 10; 
    $ext = ((abs($cdnl) %100 < 21 && abs($cdnl) %100 > 4) ? 'th'
            : (($test_c < 4) ? ($test_c < 3) ? ($test_c < 2) ? ($test_c < 1) 
            ? 'th' : 'st' : 'nd' : 'rd' : 'th')); 
    return $cdnl.$ext; 
}

Grammar:





<? php $number = 10; echo ordinal($number); //output is 10th ? >



40. Limit the speed of file downloads





<? php // local file that should be send to the client $local_file = 'test-file.zip'; // filename that the user gets as default $download_file = 'your-download-name.zip'; // set the download rate limit (=> 20,5 KB /s) $download_rate = 20.5; if(file_exists($local_file) && is_file($local_file)) { // send headers header('Cache-control: private'); header('Content-Type: application/octet-stream'); header('Content-Length: '.filesize($local_file)); header('Content-Disposition: filename='.$download_file); // flush content flush(); // open file stream $file = fopen($local_file, "r"); while(! feof($file)) { // send the current file part to the browser print fread($file, round($download_rate * 1024)); // flush the content to the browser flush(); // sleep one second sleep(1); } // close file stream fclose($file); } else { die('Error: The file '.$local_file.' does not exist! '); }? >



41. Convert text to pictures





<? php header("Content-type: image/png"); $string = $_GET['text']; $im = imagecreatefrompng("images/button.png"); $color = imagecolorallocate($im, 255, 255, 255); $px = (imagesx ($im) - 7.5 * strlen ($string)) / 2; $py = 9; $fontSize = 1; imagestring($im, fontSize, $px, $py, $string, $color); imagepng($im); imagedestroy($im); ? >



42. Get the size of the remote file





function remote_filesize($url, $user = "", $pw = "") { ob_start(); $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); if(! empty($user) && ! empty($pw)) { $headers = array('Authorization: Basic ' . base64_encode("$user:$pw")); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } $ok = curl_exec($ch); curl_close($ch); $head = ob_get_contents(); ob_end_clean(); $regex = '/Content-Length:\s([0-9].+?) \s/'; $count = preg_match($regex, $head, $matches); return isset($matches[1]) ? $matches[1] : "unknown"; }


Grammar:





<? php $file = "http://koonk.com/images/logo.png"; $size = remote_filesize($url); echo $size; ? >



43. Convert PDF to image using ImageBrick





<? php $pdf_file = './pdf/demo.pdf'; $save_to = './jpg/demo.jpg'; //make sure that apache has permissions to write in this folder! (common problem) //execute ImageMagick command 'convert' and convert PDF to JPG with applied settings exec('convert "'.$pdf_file.'" -colorspace RGB -resize 800 "'.$save_to.'"', $output, $return_var); if($return_var == 0) { //if exec successfuly converted pdf to jpg print "Conversion OK"; } else print "Conversion failed.".$output; ? >



44. Use TinyURL to generate short urls





function get_tiny_url($url)  
{  
    $ch = curl_init();  
    $timeout = 5;  
    curl_setopt($ch,CURLOPT_URL,'http://tinyurl.com/api-create.php?url='.$url);  
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);  
    $data = curl_exec($ch);  
    curl_close($ch);  
    return $data;  
}


Grammar:





<? php $url = "http://blog.koonk.com/2015/07/Hello-World"; $tinyurl = get_tiny_url($url); echo $tinyurl; ? >



45. YouTube download link generator


Let your users download Youtube videos using the following PHP snippet





function str_between($string, $start, $end)
{ 
$string = " ".$string; $ini = strpos($string,$start); if ($ini == 0) return ""; $ini += strlen($start); $len = strpos($string,$end,$ini) - $ini; return substr($string,$ini,$len); }
function get_youtube_download_link(){
    $youtube_link = $_GET['youtube'];
    $youtube_page = file_get_contents($youtube_link);
    $v_id = str_between($youtube_page, "&video_id=", "&");
    $t_id = str_between($youtube_page, "&t=", "&");
    $flv_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id";
    $hq_flv_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=6";
    $mp4_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=18";
    $threegp_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=17";
    echo "\t\tDownload (right-click > save as):\n\t\t";
    echo "<a href=\"$flv_link\">FLV</a>\n\t\t";
    echo "<a href=\"$hq_flv_link\">HQ FLV (if available)</a>\n\t\t";
    echo "<a href=\"$mp4_link\">MP4</a>\n\t\t";
    echo "<a href=\"$threegp_link\">3GP</a>\n";
}



46. Facebook-style timestamps


Facebook (x mins age, y hours ago etc) function nicetime($date) { if(empty($date)) { return "No date provided"; } $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade"); $lengths = array (" 60 ", "60", "24", "7", "4.35", "12", "10"); $now = time(); $unix_date = strtotime($date); // check validity of date if(empty($unix_date)) { return "Bad date"; } // is it future date or past date if($now > $unix_date) { $difference = $now - $unix_date; $tense = "ago"; } else { $difference = $unix_date - $now; $tense = "from now"; } for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) { $difference /= $lengths[$j]; } $difference = round($difference); if($difference ! = 1) { $periods[$j].= "s"; } return "$difference $periods[$j] {$tense}"; }

Grammar:





<? php $date = "2015-07-05 03:45"; $result = nicetime($date); // 2 days ago ? >


Blacklist filtering

function is_spam($text, $file, $split = ':', $regex = false){ $handle = fopen($file, 'rb'); $contents = fread($handle, filesize($file)); fclose($handle); $lines = explode("n", $contents); $arr = array(); foreach($lines as $line){ list($word, $count) = explode($split, $line); if($regex) $arr[$word] = $count; else $arr[preg_quote($word)] = $count; } preg_match_all("~".implode('|', array_keys($arr))."~", $text, $matches); $temp = array(); foreach($matches[0] as $match){ if(! in_array($match, $temp)){ $temp[$match] = $temp[$match] + 1; if($temp[$match] >= $arr[$word]) return true; } } return false; } $file = 'spam.txt'; $str = 'This string has cat, dog word'; if(is_spam($str, $file)) echo 'this is spam'; else echo 'this is not spam';

Output:

ab:3
dog:3
cat:2
monkey:2

Random color generator

function randomColor() { 
    $str = '#'; 
    for($i = 0 ; $i < 6 ; $i++) { 
        $randNum = rand(0 , 15); 
        switch ($randNum) { 
            case 10: $randNum = 'A'; break; 
            case 11: $randNum = 'B'; break; 
            case 12: $randNum = 'C'; break; 
            case 13: $randNum = 'D'; break; 
            case 14: $randNum = 'E'; break; 
            case 15: $randNum = 'F'; break; 
        } 
        $str .= $randNum; 
    } 
    return $str; 
} 
$color = randomColor();

49. Download files from the Internet

set_time_limit(0); 
// Supports all file types 
// URL Here: 
$url = 'http://somsite.com/some_video.flv'; 
$pi = pathinfo($url); 
$ext = $pi['extension']; 
$name = $pi['filename']; 

// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

// grab URL and pass it to the browser 
$opt = curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 

$saveFile = $name.'.'.$ext; 
if(preg_match("/[^0-9a-z._-]/i", $saveFile)) 
$saveFile = md5(microtime(true)).'.'.$ext; 

$handle = fopen($saveFile, 'wb'); 
fwrite($handle, $opt); 
fclose($handle);

50, Alexa/Google Page Rank

function page_rank($page, $type = 'alexa'){ 
    switch($type){ 
        case 'alexa': 
            $url = 'http://alexa.com/siteinfo/'; 
            $handle = fopen($url.$page, 'r'); 
            break; 
        case 'google': 
            $url = 'http://google.com/search?client=navclient-auto&ch=6-1484155081&features=Rank&q=info:';
            $handle = fopen($url.'http://'.$page, 'r'); 
            break; 
    } 
    $content = stream_get_contents($handle); 
    fclose($handle); 
    $content = preg_replace("~(n|t|ss+)~",'', $content); 
    switch($type){ 
        case 'alexa': 
            if(preg_match('~
      
(. +?)
~im',$content,$matches)){ return $matches[2]; }else{ return FALSE; } break; case 'google': $rank = explode(':',$content); if($rank[2] ! = '') return $rank[2]; else return FALSE; break; default: return FALSE; break; } } // Alexa Page Rank: echo 'Alexa Rank: '.page_rank('techug.com'); echo ' '; // Google Page Rank echo 'Google Rank: '.page_rank('techug.com', 'google');

51. Force file downloads

$filename = $_GET['file']; //Get the fileid from the URL // Query the file ID $query = sprintf("SELECT * FROM tableName WHERE id = '%s'",mysql_real_escape_string($filename)); $sql = mysql_query($query); if(mysql_num_rows($sql) > 0){ $row = mysql_fetch_array($sql); // Set some headers header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment; filename=".basename($row['FileName']).";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($row['FileName'])); @readfile($row['FileName']); exit(0); }else{ header("Location: /"); exit; }

Display a Gravatar of the user via Email

$gravatar_link = 'http://www.gravatar.com/avatar/' . md5($comment_author_email) . '?s=32';
echo '';

Delete from cURL the number of RSS feeds

$ch = curl_init(); Curl_setopt ($ch, CURLOPT_URL, 'https://feedburner.google.com/api/awareness/1.0/GetFeedData?id=7qkrmib4r9rscbplq5qgadiiq4') ; curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,2); $content = curl_exec($ch); $subscribers = get_match('/circulation="(.*)"/isU',$content); curl_close($ch);

54. Time difference calculation function

function ago($time) { $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade"); $lengths = array (" 60 ", "60", "24", "7", "4.35", "12", "10"); $now = time(); $difference = $now - $time; $tense = "ago"; for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) { $difference /= $lengths[$j]; } $difference = round($difference); if($difference ! = 1) { $periods[$j].= "s"; } return "$difference $periods[$j] 'ago' "; }

55, Crop the picture

$filename= "test.jpg";
list($w, $h, $type, $attr) = getimagesize($filename);
$src_im = imagecreatefromjpeg($filename);

$src_x = '0'; // begin x
$src_y = '0'; // begin y
$src_w = '100'; // width
$src_h = '100'; // height
$dst_x = '0'; // destination x
$dst_y = '0'; // destination y

$dst_im = imagecreatetruecolor($src_w, $src_h);
$white = imagecolorallocate($dst_im, 255, 255, 255);
imagefill($dst_im, 0, 0, $white);

imagecopy($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h);

header("Content-type: image/png");
imagepng($dst_im);
imagedestroy($dst_im);

56, check whether the website is down

Function Visit($url){$agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) "; $ch=curl_init(); curl_setopt ($ch, CURLOPT_URL,$url ); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch,CURLOPT_VERBOSE,false); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch,CURLOPT_SSLVERSION,3); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE); $page=curl_exec($ch); //echo curl_error($ch); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if($httpcode>=200 && $httpcode<300) return="" true; ="" else="" false; ="" }="" if="" (visit("http:="" www.google.com"))="" echo="" "website="" ok"."n"; ="" down"; <="" pre="">

Translation: http://blog.koonk.com