必须收藏的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 相关文章推荐
DedeCMS dede_channeltype表字段注释
Apr 07 PHP
php cache类代码(php数据缓存类)
Apr 15 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
Jun 24 PHP
php上传图片到指定位置路径保存到数据库的具体实现
Dec 30 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
php提示Failed to write session data错误的解决方法
Dec 17 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
CI框架数据库查询缓存优化的方法
Nov 21 PHP
Zend Framework上传文件重命名的实现方法
Nov 25 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
May 27 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
玩转虚拟域名◎+ .
2006/10/09 PHP
聊天室php&amp;mysql(三)
2006/10/09 PHP
C# Assembly类访问程序集信息
2009/06/13 PHP
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
js读取cookie方法总结
2014/10/31 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
javascript实现Emrips反质数枚举的示例代码
2017/12/06 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
python命令行参数sys.argv使用示例
2014/01/28 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
用python绘制樱花树
2020/10/09 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
关于护士节的演讲稿
2014/05/26 职场文书
低碳环保演讲稿
2014/08/28 职场文书
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers
vue3中provide && inject的使用
2021/07/01 Vue.js
手把手教你导入Go语言第三方库
2021/08/04 Golang