必须收藏的php实用代码片段


Posted in PHP onFebruary 02, 2016

在编写代码的时候有个神奇的工具总是好的!下面这里收集了 40+ PHP 代码片段,可以帮助你开发PHP 项目。 之前已经为大家分享了《必须收藏的23个php实用代码片段》。
这些PHP 片段对于PHP 初学者也非常有帮助,非常容易学习,让我们开始学习吧~

24. 从 PHP 数据创建 CSV 文件

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

语法:

<?php
$data[0] = "apple";
$data[1] = "oranges";
generateCsv($data, $delimiter = ',', $enclosure = '"');
?>

25. 解析 XML 数据

$xml_string="<?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, '';
}

26. 解析 JSON 数据

$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. 获取当前页面 URL
这个 PHP 片段可以帮助你让用户登录后直接跳转到之前浏览的页面

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

语法:

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

28. 从任意的 Twitter 账号获取最新的 Tweet

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

语法:

<?php
$handle = "koonktech";
my_twitter($handle);
?>

29. 转发数量
使用这个 PHP 片段可以检测你的页面 URL 有多少转发数量

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

语法:

<?php
$url = "http://blog.koonk.com";
$count = tweetCount($url);
return $count;
?>

30. 计算两个日期的差

<?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. 删除文件夹内容

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

语法:

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

32. 搜索和高亮字符串中的关键字

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

语法:

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

33. 写入文件

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

34. 根据 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);
}

语法:

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

35. 检测 URL 是否有效

function isvalidURL($url)
{
$check = 0;
if (filter_var($url, FILTER_VALIDATE_URL) !== false) {
 $check = 1;
}
return $check;
}

语法:

<?php
$url = "http://koonk.com";
$check = checkvalidURL($url);
echo $check; //if returns 1 then URL is valid.
?>

36. 生成二维码

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

语法:

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

37. 计算两个地图坐标之间的距离

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

语法:

<?php
$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. 获取一个特定话题标签的所有 Tweets

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. 添加 th,st,nd 或者 rd 作为数字的后缀

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

语法:

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

40. 限制文件下载的速度

<?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. 把文本转换成图片

<?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. 获取远程文件的大小

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

语法

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

43. 使用 imagebrick 进行 pdf 到图像的转换

<?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. 使用 tinyurl 生成短网址

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

语法:

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

45. youtube 下载链接生成器
使用下面的 PHP 片段可以让你的用户下载 Youtube 视频

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 样式的时间戳

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

语法:

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

以上就是本文的全部内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
十天学会php(1)
Oct 09 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
php获取网页标题和内容函数(不包含html标签)
Feb 03 PHP
php实现通过ftp上传文件
Jun 19 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
PHP加密解密实例分析
Dec 25 PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
php 截取中英文混合字符串的方法
May 31 PHP
PHP的mysqli_thread_id()函数讲解
Jan 24 PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 PHP
PHP执行linux命令常用函数汇总
Feb 02 #PHP
必须收藏的23个php实用代码片段
Feb 02 #PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
Feb 01 #PHP
PHP自带方法验证邮箱是否存在
Feb 01 #PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 #PHP
实例详解PHP中html word 互转的方法
Jan 28 #PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 #PHP
You might like
PHP+javascript液晶时钟
2006/10/09 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
PHP 使用二进制保存用户状态的实例
2018/01/29 PHP
激活 ActiveX 控件
2006/10/09 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Python实现获取网站PR及百度权重
2015/01/21 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
docker-py 用Python调用Docker接口的方法
2019/08/30 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
python生成word合同的实例方法
2021/01/12 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
武汉东之林科技有限公司机试
2013/09/17 面试题
校园网站的创业计划书范文
2013/12/30 职场文书
省优秀教师事迹材料
2014/01/30 职场文书
庆元旦广播稿
2014/02/10 职场文书
规范化管理年活动总结
2014/08/29 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
李强感恩观后感
2015/06/17 职场文书
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android