`
dwphper
  • 浏览: 18578 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

21 Really Useful & Handy PHP Code Snippets

    博客分类:
  • PHP
阅读更多

PHP is the most widely used web based programming language that powers millions of websites including some of the most popular ones like Facebook. Here are 21 really useful and handy PHP code snippets that every type of PHP developer will find useful.

1.Human Readable Random String
This code will create a human readable string that will look more close to dictionary words, useful for captchas.
/**************
*@length - length of random string (must be a multiple of 2)
**************/ 
function readable_random_string($length = 6){ 
    $conso=array("b","c","d","f","g","h","j","k","l", 
    "m","n","p","r","s","t","v","w","x","y","z"); 
    $vocal=array("a","e","i","o","u"); 
    $password=""; 
    srand ((double)microtime()*1000000); 
    $max = $length/2; 
    for($i=1; $i<=$max; $i++) 
    { 
    $password.=$conso[rand(0,19)]; 
    $password.=$vocal[rand(0,4)]; 
    } 
    return $password; 

/**************
*@length - length of random string (must be a multiple of 2)
**************/
function readable_random_string($length = 6){
    $conso=array("b","c","d","f","g","h","j","k","l",
    "m","n","p","r","s","t","v","w","x","y","z");
    $vocal=array("a","e","i","o","u");
    $password="";
    srand ((double)microtime()*1000000);
    $max = $length/2;
    for($i=1; $i<=$max; $i++)
    {
    $password.=$conso[rand(0,19)];
    $password.=$vocal[rand(0,4)];
    }
    return $password;
}

2.Generate a Random String
If you don’t need human readable string, then use this function instead, which will create a random string you can use for user id’s etc.
/*************
*@l - length of random string
*/ 
function generate_rand($l){ 
  $c= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; 
  srand((double)microtime()*1000000); 
  for($i=0; $i<$l; $i++){ 
      $rand.= $c[rand()%strlen($c)]; 
  } 
  return $rand; 

/*************
*@l - length of random string
*/
function generate_rand($l){
  $c= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  srand((double)microtime()*1000000);
  for($i=0; $i<$l; $i++) {
      $rand.= $c[rand()%strlen($c)];
  }
  return $rand;
}

3.Encode Email Address
With this snippet, you can encode any email address into HTML entities so that spam bots do not find it.
function encode_email($email='info@domain.com', $linkText='Contact Us', $attrs ='class="emailencoder"' ) 

    // remplazar aroba y puntos 
    $email = str_replace('@', '&#64;', $email); 
    $email = str_replace('.', '&#46;', $email); 
    $email = str_split($email, 5); 
 
    $linkText = str_replace('@', '&#64;', $linkText); 
    $linkText = str_replace('.', '&#46;', $linkText); 
    $linkText = str_split($linkText, 5); 
 
    $part1 = '<a href="ma'; 
    $part2 = 'ilto&#58;'; 
    $part3 = '" '. $attrs .' >'; 
    $part4 = '</a>'; 
 
    $encoded = '<script type="text/javascript">'; 
    $encoded .= "document.write('$part1');"; 
    $encoded .= "document.write('$part2');"; 
    foreach($email as $e) 
    { 
            $encoded .= "document.write('$e');"; 
    } 
    $encoded .= "document.write('$part3');"; 
    foreach($linkText as $l) 
    { 
            $encoded .= "document.write('$l');"; 
    } 
    $encoded .= "document.write('$part4');"; 
    $encoded .= '</script>'; 
 
    return $encoded; 

function encode_email($email='info@domain.com', $linkText='Contact Us', $attrs ='class="emailencoder"' )
{
    // remplazar aroba y puntos
    $email = str_replace('@', '&#64;', $email);
    $email = str_replace('.', '&#46;', $email);
    $email = str_split($email, 5);

    $linkText = str_replace('@', '&#64;', $linkText);
    $linkText = str_replace('.', '&#46;', $linkText);
    $linkText = str_split($linkText, 5);

    $part1 = '<a href="ma';
    $part2 = 'ilto&#58;';
    $part3 = '" '. $attrs .' >';
    $part4 = '</a>';

    $encoded = '<script type="text/javascript">';
    $encoded .= "document.write('$part1');";
    $encoded .= "document.write('$part2');";
    foreach($email as $e)
    {
            $encoded .= "document.write('$e');";
    }
    $encoded .= "document.write('$part3');";
    foreach($linkText as $l)
    {
            $encoded .= "document.write('$l');";
    }
    $encoded .= "document.write('$part4');";
    $encoded .= '</script>';

    return $encoded;
}

4.Validate email Address
E-mail validation is perhaps the most used validation in web forms, this code will validate email address and also optionally check the MX records of the domain provided in email address to make email validation more robust.
function is_valid_email($email, $test_mx = false) 

    if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email)) 
        if($test_mx) 
        { 
            list($username, $domain) = split("@", $email); 
            return getmxrr($domain, $mxrecords); 
        } 
        else 
            return true; 
    else 
        return false; 

function is_valid_email($email, $test_mx = false)
{
    if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
        if($test_mx)
        {
            list($username, $domain) = split("@", $email);
            return getmxrr($domain, $mxrecords);
        }
        else
            return true;
    else
        return false;
}

5. List Directory Contents
function list_files($dir) 

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

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

6. Destroy Directory
Delete a directory including its contents.
/*****
*@dir - Directory to destroy
*@virtual[optional]- whether a virtual directory
*/ 
function destroyDir($dir, $virtual = false) 

    $ds = DIRECTORY_SEPARATOR; 
    $dir = $virtual ? realpath($dir) : $dir; 
    $dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir; 
    if (is_dir($dir) && $handle = opendir($dir)) 
    { 
        while ($file = readdir($handle)) 
        { 
            if ($file == '.' || $file == '..') 
            { 
                continue; 
            } 
            elseif (is_dir($dir.$ds.$file)) 
            { 
                destroyDir($dir.$ds.$file); 
            } 
            else 
            { 
                unlink($dir.$ds.$file); 
            } 
        } 
        closedir($handle); 
        rmdir($dir); 
        return true; 
    } 
    else 
    { 
        return false; 
    } 

/*****
*@dir - Directory to destroy
*@virtual[optional]- whether a virtual directory
*/
function destroyDir($dir, $virtual = false)
{
    $ds = DIRECTORY_SEPARATOR;
    $dir = $virtual ? realpath($dir) : $dir;
    $dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir;
    if (is_dir($dir) && $handle = opendir($dir))
    {
        while ($file = readdir($handle))
        {
            if ($file == '.' || $file == '..')
            {
                continue;
            }
            elseif (is_dir($dir.$ds.$file))
            {
                destroyDir($dir.$ds.$file);
            }
            else
            {
                unlink($dir.$ds.$file);
            }
        }
        closedir($handle);
        rmdir($dir);
        return true;
    }
    else
    {
        return false;
    }
}

7.Parse JSON Data
With most of the popular web services like Twitter providing their data through APIs, it is always helpful to know how to parse API data which is sent in various formats including JSON, XML etc.
$json_string='{"id":1,"name":"foo","email":"foo@foobar.com","interest":["wordpress","php"]} '; 
$obj=json_decode($json_string); 
echo $obj->name; //prints foo 
echo $obj->interest[1]; //prints php 
$json_string='{"id":1,"name":"foo","email":"foo@foobar.com","interest":["wordpress","php"]} ';
$obj=json_decode($json_string);
echo $obj->name; //prints foo
echo $obj->interest[1]; //prints php

8.Parse XML Data
//xml string 
$xml_string="<?xml version='1.0'?>
<users>
   <user id='398'>
      <name>Foo</name>
      <email>foo@bar.com</name>
   </user>
   <user id='867'>
      <name>Foobar</name>
      <email>foobar@foo.com</name>
   </user>
</users>"; 
 
//load the xml string using simplexml 
$xml = simplexml_load_string($xml_string); 
 
//loop through the each node of user 
foreach ($xml->user as $user) 

   //access attribute 
   echo $user['id'], '  '; 
   //subnodes are accessed by -> operator 
   echo $user->name, '  '; 
   echo $user->email, '<br />'; 


//xml string
$xml_string="<?xml version='1.0'?>
<users>
   <user id='398'>
      <name>Foo</name>
      <email>foo@bar.com</name>
   </user>
   <user id='867'>
      <name>Foobar</name>
      <email>foobar@foo.com</name>
   </user>
</users>";

//load the xml string using simplexml
$xml = simplexml_load_string($xml_string);

//loop through the each node of user
foreach ($xml->user as $user)
{
   //access attribute
   echo $user['id'], '  ';
   //subnodes are accessed by -> operator
   echo $user->name, '  ';
   echo $user->email, '<br />';
}

9.Create Post Slugs
Create user friendly post slugs from title string to use within URLs.
function create_slug($string){ 
    $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string); 
    return $slug; 

function create_slug($string){
    $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
    return $slug;
}

10.Get Real IP Address of Client
This function will fetch the real IP address of the user even if he is behind a proxy server.
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; 

function getRealIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))
    {
        $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_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;
}

11.Force file Download
Provide files to the user by forcing them to download.
/********************
*@file - path to file
*/ 
function force_download($file) 

    if ((isset($file))&&(file_exists($file))) { 
       header("Content-length: ".filesize($file)); 
       header('Content-Type: application/octet-stream'); 
       header('Content-Disposition: attachment; filename="' . $file . '"'); 
       readfile("$file"); 
    } else { 
       echo "No file selected"; 
    } 

/********************
*@file - path to file
*/
function force_download($file)
{
    if ((isset($file))&&(file_exists($file))) {
       header("Content-length: ".filesize($file));
       header('Content-Type: application/octet-stream');
       header('Content-Disposition: attachment; filename="' . $file . '"');
       readfile("$file");
    } else {
       echo "No file selected";
    }
}

12.Creating a Tag Cloud
function getCloud( $data = array(), $minFontSize = 12, $maxFontSize = 30 ) 

    $minimumCount = min($data); 
    $maximumCount = max($data); 
    $spread       = $maximumCount - $minimumCount; 
    $cloudHTML    = ''; 
    $cloudTags    = array(); 
 
    $spread == 0 && $spread = 1; 
 
    foreach( $data as $tag => $count ) 
    { 
        $size = $minFontSize + ( $count - $minimumCount ) 
            * ( $maxFontSize - $minFontSize ) / $spread; 
        $cloudTags[] = '<a style="font-size: ' . floor( $size ) . 'px' 
        . '" class="tag_cloud" href="#" title="\'' . $tag  . 
        '\' returned a count of ' . $count . '">' 
        . htmlspecialchars( stripslashes( $tag ) ) . '</a>'; 
    } 
 
    return join( "\n", $cloudTags ) . "\n"; 

/**************************
****   Sample usage    ***/ 
$arr = Array('Actionscript' => 35, 'Adobe' => 22, 'Array' => 44, 'Background' => 43, 
    'Blur' => 18, 'Canvas' => 33, 'Class' => 15, 'Color Palette' => 11, 'Crop' => 42, 
    'Delimiter' => 13, 'Depth' => 34, 'Design' => 8, 'Encode' => 12, 'Encryption' => 30, 
    'Extract' => 28, 'Filters' => 42); 
echo getCloud($arr, 12, 36); 

function getCloud( $data = array(), $minFontSize = 12, $maxFontSize = 30 )
{
    $minimumCount = min($data);
    $maximumCount = max($data);
    $spread       = $maximumCount - $minimumCount;
    $cloudHTML    = '';
    $cloudTags    = array();

    $spread == 0 && $spread = 1;

    foreach( $data as $tag => $count )
    {
        $size = $minFontSize + ( $count - $minimumCount )
            * ( $maxFontSize - $minFontSize ) / $spread;
        $cloudTags[] = '<a style="font-size: ' . floor( $size ) . 'px'
        . '" class="tag_cloud" href="#" title="\'' . $tag  .
        '\' returned a count of ' . $count . '">'
        . htmlspecialchars( stripslashes( $tag ) ) . '</a>';
    }

    return join( "\n", $cloudTags ) . "\n";
}
/**************************
****   Sample usage    ***/
$arr = Array('Actionscript' => 35, 'Adobe' => 22, 'Array' => 44, 'Background' => 43,
    'Blur' => 18, 'Canvas' => 33, 'Class' => 15, 'Color Palette' => 11, 'Crop' => 42,
    'Delimiter' => 13, 'Depth' => 34, 'Design' => 8, 'Encode' => 12, 'Encryption' => 30,
    'Extract' => 28, 'Filters' => 42);
echo getCloud($arr, 12, 36);

13.Find Similarity Between Two Strings
PHP includes a function similar_text very rarely used but quite useful that compares two strings and returns the percentage of similarity between two.
similar_text($string1, $string2, $percent); 
//$percent will have the percentage of similarity 

similar_text($string1, $string2, $percent);
//$percent will have the percentage of similarity

14. Use Gravatars in Your Application
With ever increasing popularity of WordPress, Gravatars have become quite popular. It is very easy to integrate them into your application as they provide a very easy to use API.
/******************
*@email - Email address to show gravatar for
*@size - size of gravatar
*@default - URL of default gravatar to use
*@rating - rating of Gravatar(G, PG, R, X)
*/ 
function show_gravatar($email, $size, $default, $rating) 

    echo '<img src="http://www.gravatar.com/avatar.php?gravatar_id='.md5($email). 
        '&default='.$default.'&size='.$size.'&rating='.$rating.'" width="'.$size.'px"
        height="'.$size.'px" />'; 

/******************
*@email - Email address to show gravatar for
*@size - size of gravatar
*@default - URL of default gravatar to use
*@rating - rating of Gravatar(G, PG, R, X)
*/
function show_gravatar($email, $size, $default, $rating)
{
    echo '<img src="http://www.gravatar.com/avatar.php?gravatar_id='.md5($email).
        '&default='.$default.'&size='.$size.'&rating='.$rating.'" width="'.$size.'px"
        height="'.$size.'px" />';
}

15. Truncate Text at Word Break
This function will truncate strings only at word breaks which can be used to show a teaser for complete article without breaking words.
// Original PHP code by Chirp Internet: www.chirp.com.au 
// Please acknowledge use of this code by including this header. 
function myTruncate($string, $limit, $break=".", $pad="...") { 
    // return with no change if string is shorter than $limit 
    if(strlen($string) <= $limit) 
        return $string;  
 
    // is $break present between $limit and the end of the string? 
    if(false !== ($breakpoint = strpos($string, $break, $limit))) { 
        if($breakpoint < strlen($string) - 1) { 
            $string = substr($string, 0, $breakpoint) . $pad; 
        } 
    } 
    return $string; 

/***** Example ****/ 
$short_string=myTruncate($long_string, 100, ' '); 

// Original PHP code by Chirp Internet: www.chirp.com.au
// Please acknowledge use of this code by including this header.
function myTruncate($string, $limit, $break=".", $pad="...") {
    // return with no change if string is shorter than $limit
    if(strlen($string) <= $limit)
        return $string;

    // is $break present between $limit and the end of the string?
    if(false !== ($breakpoint = strpos($string, $break, $limit))) {
        if($breakpoint < strlen($string) - 1) {
            $string = substr($string, 0, $breakpoint) . $pad;
        }
    }
    return $string;
}
/***** Example ****/
$short_string=myTruncate($long_string, 100, ' ');

16. Zip Files on the Fly
/* creates a compressed zip file */ 
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; 
    } 

/***** Example Usage ***/ 
$files=array('file1.jpg', 'file2.jpg', 'file3.gif'); 
create_zip($files, 'myzipfile.zip', true); 

/* creates a compressed zip file */
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;
    }
}
/***** Example Usage ***/
$files=array('file1.jpg', 'file2.jpg', 'file3.gif');
create_zip($files, 'myzipfile.zip', true);

17.Unzip Zip File
/**********************
*@file - path to zip file
*@destination - destination directory for unzipped files
*/ 
function unzip_file($file, $destination){ 
    // create object 
    $zip = new ZipArchive() ; 
    // open archive 
    if ($zip->open($file) !== TRUE) { 
        die (’Could not open archive’); 
    } 
    // extract contents to destination directory 
    $zip->extractTo($destination); 
    // close archive 
    $zip->close(); 
    echo 'Archive extracted to directory'; 

/**********************
*@file - path to zip file
*@destination - destination directory for unzipped files
*/
function unzip_file($file, $destination){
    // create object
    $zip = new ZipArchive() ;
    // open archive
    if ($zip->open($file) !== TRUE) {
        die (’Could not open archive’);
    }
    // extract contents to destination directory
    $zip->extractTo($destination);
    // close archive
    $zip->close();
    echo 'Archive extracted to directory';
}

18. Prepend http to a URL
Some times you need to accept some url as input but users seldom add http:// to it, this code will add http:// to the URL if it’s not there.

if (!preg_match("/^(http|ftp):/", $_POST['url'])) { 
   $_POST['url'] = 'http://'.$_POST['url']; 

if (!preg_match("/^(http|ftp):/", $_POST['url'])) {
   $_POST['url'] = 'http://'.$_POST['url'];
}

19.Convert URLs within String into hyperlinks
This function converts URLs and e-mail addresses within a string into clickable hyperlinks.
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 = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})', 
 '<a href="mailto:\1">\1</a>', $text); 
 
return $text; 


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 = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})',
 '<a href="mailto:\1">\1</a>', $text);
return $text;
}

20.Resize Images on the fly
Creating thumbnails of the images is required many a times, this code will be useful to know about the logic of thumbnail generation.
/**********************
*@filename - path to the image
*@tmpname - temporary path to thumbnail
*@xmax - max width
*@ymax - max height
*/ 
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; 

/**********************
*@filename - path to the image
*@tmpname - temporary path to thumbnail
*@xmax - max width
*@ymax - max height
*/
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;
}

21.Detect AJAX Request
Most of the JavaScript frameworks like jQuery, mootools send and additional HTTP_X_REQUESTED_WITH header when they make an AJAX request, so that you can detect AJAX request on server side.(source)

if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ 
    //If AJAX Request Then 
}else{ 
//something else 

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
    //If AJAX Request Then
}else{
//something else
}

If you would like to recommend a snippet to include in this list to make this list a more useful resource, tell us about it in comments below.

分享到:
评论

相关推荐

    python-handy-snippets:Python 代码块可能应该是要点

    "python-handy-snippets"这个项目收集了一些实用的Python代码片段,旨在帮助开发者提高效率,解决日常编程问题。这些技巧和窍门是经过实践检验的,能够使你的Python编程更加得心应手。 在Python编程中,了解并熟练...

    Handy2000 Open Protocol_019 电动扳手最新开发文档

    ### Handy2000 Open Protocol_019 电动扳手最新开发文档 #### 概述 Handy2000 Open Protocol_019 是一份详细的电动扳手开发文档,该文档由Handy2000公司的研发部门编写,记录了电动扳手使用的开放协议及其迭代更新...

    Python Recipes Handbook(Apress,2016)

    This book is your handy code cookbook reference. Whether you’re a maker, game developer, cloud computing programmer and more, this is a must-have reference for your library. Python Recipes Handbook...

    Code5_handy_things_chat_voice_

    标题“Code5_handy_things_chat_voice_”和描述“handy to use for all sort of things”暗示了这个压缩包可能包含的是与聊天和语音功能相关的代码或工具集合,可能是为了方便各种用途而设计的。在IT领域,尤其是...

    handy-master 源码

    "Handy-Master"是一个可能的开源项目或者框架的源码资源,它的名称暗示着它可能是一个方便、实用的工具集或管理系统。由于没有提供更具体的信息,我将基于一般性的开源项目源码分析来解释可能包含的知识点。 1. **...

    HANDY V5.2 手工艺品外贸独立站商城模板.zip

    "HANDY V5.2 手工艺品外贸独立站商城模板" 这个标题揭示了我们要讨论的核心内容。"HANDY"可能是该模板系列的名称,"V5.2"表示这是该系列的第五个主要版本,第二次次要更新。"手工艺品"表明这个模板是为展示和销售手...

    Handy_Note_6.5.apk

    Handy_Note_6.5.apk 非常好的应用

    Android代码-Door Code Notifier

    The notification also presents handy 'Text' and 'Call' quick actions. The interface to enter the data is very simple and clean. This app is compatible and works well with Android Wear. Licence This ...

    Programming the Microsoft Windows Driver Model(2nd) & CDROM(Source Code)

    2nd version, cdrom(source code) Programming the Microsoft Windows Driver Model, Second Edition Microsoft Press | ISBN: 0735618038 | 800 pages | December 31, 2002 | CHM | 2 Mb Written for advanced C/...

    Handy.Recovery.v5.5破解版

    一款功能强大、易于使用的数据恢复工具。支持FAT12/16/32, NTFS and NTFS 5 + EFS 文件系统,并且能够恢复NTFS分区上的压缩和加密文件 软件! 能展示每个文件恢复成功的可能性;创建磁盘镜像并从中恢复数据;...

    Handy Backup(备份工具) v8.0.4.93.zip

    Handy Backup是一款功能强大、易于使用的数据备份软件。软件可以将电脑中的重要资料随时备份到不同的储存装置中,甚至于远端的FTP Serever亦可,还提供了专门插件以方便MS Outlook、注册表和ICQ文件。并具备强大文件...

    The-Handy-Math-Answer

    根据提供的文件信息,我们可以推断出《The Handy Math Answer Book》是一本旨在为读者提供广泛数学概念、原理及其应用解答的书籍。虽然原文档没有直接给出具体的数学知识点,但通过标题“数学是什么”以及该书属于...

    handy profile

    easy to change the profile accoring to the working entry

    handy recovery v4.0简体中文版.rar

    便利的恢复handy recovery v4.0硬盘基地专业汉化版更方便你的使用;是一个数据分区删除格式化恢复工具支持FAT12/FAT16/FAT32/NTFS/NTFS5等系统格式能够恢复NTFS分区中的数据;以下文字来自于软件的翻译。你应该...

    Handy.Recovery.v4.0

    《Handy Recovery v4.0:数据恢复利器详解》 Handy Recovery v4.0是一款高效的数据恢复软件,专门设计用于帮助用户恢复丢失或误删除的文件。在我们的日常生活中,由于各种原因,如意外删除、硬盘故障、系统崩溃等,...

    Handy Recovery V1.0 汉化版

    这个软件最大的好处就是可以像在回收站里面还原一样, 就是没回收站快,恢复1G的文件要50秒,我在一个120G 的硬盘里面直接还原了75个1G的镜像文件,误删的

    《Handy AR:Markerless Inspection of Augmented Reality Objects Using Fingertip Tracking》

    《Handy AR:Markerless Inspection of Augmented Reality Objects Using Fingertip Tracking》是一篇在SIGGRAPH会议上发表的重要论文,其主要关注的是无标记的增强现实(AR)对象检查技术,特别是通过指尖追踪来...

    【点选编辑权重汉化版】Handy Weight Edit.zip

    Handy Weight Edit 是Blender Edit 模式下的另一种权重绘制方法。 它提供精确控制重量分布的位置和方式。现在,您可以选择单个顶点并调整权重值,而不是使用画笔在难以获得的区域进行绘画。除了编辑模式下所有熟悉的...

Global site tag (gtag.js) - Google Analytics