19 super useful PHP code snippets

  • 2021-01-25 07:20:53
  • OfStack

1) Whois query using PHP -- Use PHP to obtain Whois requests

Using this code, whois information is available at a specific domain name. Take the domain name as an argument and display information about all the domain names.

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:   
    //  
    // <a href="http://de.wikipedia.org/wiki/Whois">http://de.wikipedia.org/wiki/Whois</a>  
    //  
    $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;  
}  

2) Text messaging with using the TextMagic API -- Use TextMagic API for PHP Test information

TextMagic introduces the powerful core API, which makes it easy to send SMS to mobile phones. The API is required to be paid.


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 )  

3) Get info about your memory usage -- Get the memory usage

This code helps you get memory usage.


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 
*/  

4) Display source code of any webpage -- View any webpage source code

If you want to view the source code of the web page, just change line 2 URL and the source code will appear on the web page.

<?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 #{$line_num} : " . htmlspecialchars($line) . "  
\n";  
}  

5) Create data uri's -- Create data uri

By using this code, you can create data Uri, which is very useful for embedding images in HTML/CSS, helping to save HTTP requests.


function data_uri($file, $mime) {  
  $contents=file_get_contents($file);  
  $base64=base64_encode($contents);  
  echo "data:$mime;base64,$base64";  
} 

6) Detect location by IP -- Retrieve geographic location by IP

This code helps you find a specific IP. Simply type IP on the function parameter to detect the location.


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('{  
City : ([^<]*)  
}i', $content, $regs) ) { $city = $regs[1]; } if ( preg_match( ' {  

State/Province : ([^<]*)  

}i', $content, $regs) ) { $state = $regs[1]; } if( $city!= "  && $state!= "  ){ $location = $city .  ' ,  '  . $state; return $location; }else{ return $default; } }  

7) Detect browser language -- View the browser language

Check the scripting language used by the 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;  
}  

8) Check if server is HTTPS -- Check whether the server is HTTPS or not

if ($_SERVER['HTTPS'] != "on") {   
    echo "This is not HTTPS";  
}else{  
    echo "This is HTTPS";  
}  

9) Generate CSV file a PHP array -- Generate the.csv file in the PHP array
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;  
}  

10. Find distance between Longitudes and Latitudes

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


The example returns the following:
miles: 2.6025  
feet: 13,741.4350  
yards: 4,580.4783  
kilometers: 4.1884  
meters: 4,188.3894

11. Improve cURL function

function xcurl($url,$ref=null,$post=array(),$ua="Mozilla/5.0 (X11; Linux x86_64; rv:2.2a1pre) Gecko/20110324 Firefox/4.2a1pre",$print=false) {  
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);  
    if(!empty($ref)) {  
        curl_setopt($ch, CURLOPT_REFERER, $ref);  
    }  
    curl_setopt($ch, CURLOPT_URL, $url);  
    curl_setopt($ch, CURLOPT_HEADER, 0);  
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    if(!empty($ua)) {  
        curl_setopt($ch, CURLOPT_USERAGENT, $ua);  
    }  
    if(count($post) > 0){  
        curl_setopt($ch, CURLOPT_POST, 1);  
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);      
    }  
    $output = curl_exec($ch);  
    curl_close($ch);  
    if($print) {  
        print($output);  
    } else {  
        return $output;  
    }  
}

12. Clean up user input
<?php
function cleanInput($input) {

  $search = array(
    '@<script[^>]*?>.*?</script>@si',   // Strip out javascript
    '@<[\/\!]*?[^<>]*?>@si',            // Strip out HTML tags
    '@<style[^>]*?>.*?</style>@siU',    // Strip style tags properly
    '@<![\s\S]*?--[ \t\n\r]*>@'         // Strip multi-line comments
  );

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

13. Location detection by IP (city, country)
function detect_city($ip) {  

        $default = 'Hollywood, CA';  

        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('{  

      
City : ([^<]*)  
}i', $content, $regs) ) { $city = $regs[1]; } if ( preg_match('{  

State/Province : ([^<]*)  

}i', $content, $regs) ) { $state = $regs[1]; } if( $city!='' && $state!='' ){ $location = $city . ', ' . $state; return $location; }else{ return $default; } }  

14. Set password strength

function password_strength($string){ 
    $h    = 0; 
    $size = strlen($string); 
    foreach(count_chars($string, 1) as $v){ 
        $p = $v / $size; 
        $h -= $p * log($p) / log(2); 
    } 
    $strength = ($h / 4) * 100; 
    if($strength > 100){ 
        $strength = 100; 
    } 
    return $strength; 
} 
var_dump(password_strength("Correct Horse Battery Staple")); 
echo "<br>"; 
var_dump(password_strength("Super Monkey Ball")); 
echo "<br>"; 
var_dump(password_strength("Tr0ub4dor&3")); 
echo "<br>"; 
var_dump(password_strength("abc123")); 
echo "<br>"; 
var_dump(password_strength("sweet"));

15. Detect browser language, provide only available $availableLanguages as array (' en', 'de',' es')
function get_client_language($availableLanguages, $default='en'){  

    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {  

        $langs=explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);  

        //start going through each one  
        foreach ($langs as $value){  

            $choice=substr($value,0,2);  
            if(in_array($choice, $availableLanguages)){  
                return $choice;  

            }  

        }  
    }   
    return $default;  
} 

Create data URL

function data_uri($file, $mime) {  
  $contents=file_get_contents($file);  
  $base64=base64_encode($contents);  
  echo "data:$mime;base64,$base64";  
} 

17. Create a more friendly page title SEO URL

$title = "This foo's bar is rockin' cool!" ; echo makeseoname($title); //RETURNS: //this-foos-bar-is-rockin-cool

function make_seo_name($title) {  
    return preg_replace('/[^a-z0-9_-]/i', '', strtolower(str_replace(' ', '-', trim($title))));  
}

18. Ultimate encryption

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 )  
8
19a.Tweeter Feed Runner -- With any twitter name, user resources can be loaded on any page.

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 )  
9
b.Tweeter Feed Runner -- Used to create files in the theme, for example: example.php

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 
*/  
0


Related articles: