1. 目录清单

使用下面的 PHP 代码片段可以在一个目录中列出所有文件和文件夹。

  1. function list_files($dir)
  2. {
  3. if(is_dir($dir))
  4. {
  5. if($handle = opendir($dir))
  6. {
  7. while(($file = readdir($handle)) !== false)
  8. {
  9. if($file != "." && $file != ".." && $file != "Thumbs.db"/*pesky windows, images..*/)
  10. {
  11. echo '<a target="_blank" href="'.$dir.$file.'">'.$file.'</a><br>'."\n";
  12. }
  13. }
  14. closedir($handle);
  15. }
  16. }
  17. }

语法:

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

2. 检测用户语言

使用下面的 PHP 代码片段可以检测用户浏览器所使用的语言。

  1. function get_client_language($availableLanguages, $default='en'){
  2. if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
  3. $langs=explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  4. foreach ($langs as $value){
  5. $choice=substr($value,0,2);
  6. if(in_array($choice, $availableLanguages)){
  7. return $choice;
  8. }
  9. }
  10. }
  11. return $default;
  12. }

3. 查看 CSV 文件

  1. function readCSV($csvFile){
  2. $file_handle = fopen($csvFile, 'r');
  3. while (!feof($file_handle) ) {
  4. $line_of_text[] = fgetcsv($file_handle, 1024);
  5. }
  6. fclose($file_handle);
  7. return $line_of_text;
  8. }

语法:

  1. <?php
  2. $csvFile = "test.csv";
  3. $csv = readCSV($csvFile);
  4. $a = csv[0][0]; // This will get value of Column 1 & Row 1
  5. ?>

4. 从 PHP 数据创建 CSV 文件

  1. function generateCsv($data, $delimiter = ',', $enclosure = '"') {
  2. $handle = fopen('php://temp', 'r+');
  3. foreach ($data as $line) {
  4. fputcsv($handle, $line, $delimiter, $enclosure);
  5. }
  6. rewind($handle);
  7. while (!feof($handle)) {
  8. $contents .= fread($handle, 8192);
  9. }
  10. fclose($handle);
  11. return $contents;
  12. }

语法:

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

5. 解析 XML 数据

  1. $xml_string="<?xml version='1.0'?>
  2. <moleculedb>
  3. <molecule name='Benzine'>
  4. <symbol>ben</symbol>
  5. <code>A</code>
  6. </molecule>
  7. <molecule name='Water'>
  8. <symbol>h2o</symbol>
  9. <code>K</code>
  10. </molecule>
  11. </moleculedb>";
  12.  
  13. //load the xml string using simplexml function
  14. $xml = simplexml_load_string($xml_string);
  15.  
  16. //loop through the each node of molecule
  17. foreach ($xml->molecule as $record)
  18. {
  19. //attribute are accessted by
  20. echo $record['name'], ' ';
  21. //node are accessted by -> operator
  22. echo $record->symbol, ' ';
  23. echo $record->code, '<br />';
  24. }

6. 解析 JSON 数据

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

7. 获取当前页面 URL

这个 PHP 片段可以帮助你让用户登录后直接跳转到之前浏览的页面。

  1. function current_url()
  2. {
  3. $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
  4. $validURL = str_replace("&", "&amp;", $url);
  5. return validURL;
  6. }

语法:

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

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

  1. function my_twitter($username)
  2. {
  3. $no_of_tweets = 1;
  4. $feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=" . $no_of_tweets;
  5. $xml = simplexml_load_file($feed);
  6. foreach($xml->children() as $child) {
  7. foreach ($child as $value) {
  8. if($value->getName() == "link") $link = $value['href'];
  9. if($value->getName() == "content") {
  10. $content = $value . "";
  11. echo '<p class="twit">'.$content.' <a class="twt" href="'.$link.'" title="">&nbsp; </a></p>';
  12. }
  13. }
  14. }
  15. }

语法:

  1. <?php
  2. $handle = "koonktech";
  3. my_twitter($handle);
  4. ?>

9. 转发数量

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

  1. function tweetCount($url) {
  2. $content = file_get_contents("http://api.tweetmeme.com/url_info?url=".$url);
  3. $element = new SimpleXmlElement($content);
  4. $retweets = $element->story->url_count;
  5. if($retweets){
  6. return $retweets;
  7. } else {
  8. return 0;
  9. }
  10. }

语法:

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

10. 计算两个日期的差

  1. <?php
  2. $date1 = date( 'Y-m-d' );
  3. $date2 = "2015-12-04";
  4. $diff = abs(strtotime($date2) - strtotime($date1));
  5. $years = floor($diff / (365*60*60*24));
  6. $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
  7. $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
  8. printf("%d years, %d months, %d days\n", $years, $months, $days);
  9. -------------------------------------------------------- OR
  10. $date1 = new DateTime("2007-03-24");
  11. $date2 = new DateTime("2009-06-26");
  12. $interval = $date1->diff($date2);
  13. echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days ";
  14. // shows the total amount of days (not divided into years, months and days like above)
  15. echo "difference " . $interval->days . " days ";
  16. -------------------------------------------------------- OR
  17.  
  18. /**
  19. * Calculate differences between two dates with precise semantics. Based on PHPs DateTime::diff()
  20. * implementation by Derick Rethans. Ported to PHP by Emil H, 2011-05-02. No rights reserved.
  21. *
  22. * See here for original code:
  23. * http://svn.php.net/viewvc/php/php-src/trunk/ext/date/lib/tm2unixtime.c?revision=302890&view=markup
  24. * http://svn.php.net/viewvc/php/php-src/trunk/ext/date/lib/interval.c?revision=298973&view=markup
  25. */
  26. function _date_range_limit($start, $end, $adj, $a, $b, $result)
  27. {
  28. if ($result[$a] < $start) {
  29. $result[$b] -= intval(($start - $result[$a] - 1) / $adj) + 1;
  30. $result[$a] += $adj * intval(($start - $result[$a] - 1) / $adj + 1);
  31. }
  32. if ($result[$a] >= $end) {
  33. $result[$b] += intval($result[$a] / $adj);
  34. $result[$a] -= $adj * intval($result[$a] / $adj);
  35. }
  36. return $result;
  37. }
  38. function _date_range_limit_days($base, $result)
  39. {
  40. $days_in_month_leap = array(31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  41. $days_in_month = array(31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  42. _date_range_limit(1, 13, 12, "m", "y", &$base);
  43. $year = $base["y"];
  44. $month = $base["m"];
  45. if (!$result["invert"]) {
  46. while ($result["d"] < 0) {
  47. $month--;
  48. if ($month < 1) {
  49. $month += 12;
  50. $year--;
  51. }
  52. $leapyear = $year % 400 == 0 || ($year % 100 != 0 && $year % 4 == 0);
  53. $days = $leapyear ? $days_in_month_leap[$month] : $days_in_month[$month];
  54. $result["d"] += $days;
  55. $result["m"]--;
  56. }
  57. } else {
  58. while ($result["d"] < 0) {
  59. $leapyear = $year % 400 == 0 || ($year % 100 != 0 && $year % 4 == 0);
  60. $days = $leapyear ? $days_in_month_leap[$month] : $days_in_month[$month];
  61. $result["d"] += $days;
  62. $result["m"]--;
  63. $month++;
  64. if ($month > 12) {
  65. $month -= 12;
  66. $year++;
  67. }
  68. }
  69. }
  70. return $result;
  71. }
  72. function _date_normalize($base, $result)
  73. {
  74. $result = _date_range_limit(0, 60, 60, "s", "i", $result);
  75. $result = _date_range_limit(0, 60, 60, "i", "h", $result);
  76. $result = _date_range_limit(0, 24, 24, "h", "d", $result);
  77. $result = _date_range_limit(0, 12, 12, "m", "y", $result);
  78. $result = _date_range_limit_days(&$base, &$result);
  79. $result = _date_range_limit(0, 12, 12, "m", "y", $result);
  80. return $result;
  81. }
  82. /**
  83. * Accepts two unix timestamps.
  84. */
  85. function _date_diff($one, $two)
  86. {
  87. $invert = false;
  88. if ($one > $two) {
  89. list($one, $two) = array($two, $one);
  90. $invert = true;
  91. }
  92. $key = array("y", "m", "d", "h", "i", "s");
  93. $a = array_combine($key, array_map("intval", explode(" ", date("Y m d H i s", $one))));
  94. $b = array_combine($key, array_map("intval", explode(" ", date("Y m d H i s", $two))));
  95. $result = array();
  96. $result["y"] = $b["y"] - $a["y"];
  97. $result["m"] = $b["m"] - $a["m"];
  98. $result["d"] = $b["d"] - $a["d"];
  99. $result["h"] = $b["h"] - $a["h"];
  100. $result["i"] = $b["i"] - $a["i"];
  101. $result["s"] = $b["s"] - $a["s"];
  102. $result["invert"] = $invert ? 1 : 0;
  103. $result["days"] = intval(abs(($one - $two)/86400));
  104. if ($invert) {
  105. _date_normalize(&$a, &$result);
  106. } else {
  107. _date_normalize(&$b, &$result);
  108. }
  109. return $result;
  110. }
  111. $date = "2014-12-04 19:37:22";
  112. echo '<pre>';
  113. print_r( _date_diff( strtotime($date), time() ) );
  114. echo '</pre>';
  115. ?>

PHP实用代码片段(三)的更多相关文章

  1. 回归 | js实用代码片段的封装与总结(持续更新中...)

      上一次更博还是去年10月28号了,截至今天已经有整整4个月没有更新博客了,没更新博客不是代表不学了,期间我已经用vue做了两个项目,微信小程序做了一个项目,只是毕竟找到工作了,想偷偷懒,你懂的. ...

  2. PHP实用代码片段(二)

    1. 转换 URL:从字符串变成超链接 如果你正在开发论坛,博客或者是一个常规的表单提交,很多时候都要用户访问一个网站.使用这个函数,URL 字符串就可以自动的转换为超链接. function mak ...

  3. C#程序员经常用到的10个实用代码片段 - 操作系统

    原文地址  如果你是一个C#程序员,那么本文介绍的10个C#常用代码片段一定会给你带来帮助,从底层的资源操作,到上层的UI应用,这些代码也许能给你的开发节省不少时间.以下是原文: 1 读取操作系统和C ...

  4. Android 实用代码片段

    一些不常见确又很实用的代码块. 1.精确获取屏幕尺寸(例如:3.5.4.0.5.0寸屏幕) public static double getScreenPhysicalSize(Activity ct ...

  5. Android实用代码片段

    有时候,需要一些小的功能,找到以后,就把它贴到了博客下面,作为留言,查找起来很不方便,所以就整理一下,方便自己和他人. 一.  获取系统版本号: 1 PackageInfo info = this.g ...

  6. C#程序员经常用到的10个实用代码片段

    1 读取操作系统和CLR的版本 OperatingSystem os = System.Environment.OSVersion; Console.WriteLine(“Platform: {}”, ...

  7. [python实用代码片段]python获取当前时间的前一天,前一周,前一个月

    python获取当前时间的前一天,前一周,前一个月. 实用python的datetime.timedelta方法,避免了有的月份是30和31等不同的情况. 获取前一个月的时间,方法实现:首先datet ...

  8. PHP实用代码片段(一)

    1. 发送 SMS 在开发 Web 或者移动应用的时候,经常会遇到需要发送 SMS 给用户,或者因为登录原因,或者是为了发送信息.下面的 PHP 代码就实现了发送 SMS 的功能. 为了使用任何的语言 ...

  9. PHP实用代码片段(四)

    1. 删除文件夹内容 function Delete($path) { if (is_dir($path) === true) { $files = array_diff(scandir($path) ...

随机推荐

  1. c/c++ 友元的简单应用

    友元的简单应用 1,对象 + 对象,或者,对象 + 数字,可以用类的成员函数去重载+号函数,但是,数字 + 对象就不能用类的成员函数去重载+号函数了, 因为编译器会把数字 + 对象翻译成数字.oper ...

  2. node.js cluster模式启用方式

    众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心处理器 ...

  3. 让python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE等请求(新方法)

    通过上篇博文的方法处理后,进入代码调试后发现ajax获取不了服务器端返回的数据,度娘后发现原来AJAX的OPTIONS请求方式是状态类型查询,即向服务器提交信息后不返回任何信息,只将执行状态(200状 ...

  4. Three.js基础学习【修改版】

    一. Three.js官网及使用Three.js必备的三个条件 1.Three.js 官网 https://threejs.org/ 2.使用Three.js必备的三个条件(To actually b ...

  5. Maven中POM.XML详解

    转自https://blog.csdn.net/jariwsz/article/details/19554137 我们先看一个简单的例子: <project xmlns="http:/ ...

  6. 2.03-handler_openner

    import urllib.request def handler_openner(): #系统的urlopen并没有添加代理的功能所以需要我们自定义这个功能 #安全 套接层 ssl第三方的CA数字证 ...

  7. 如何用chrome扩展将网页变成黑底白字,用以保护视力

    不知道有没有科学依据,自己感觉黑底白字对视力好些,于是动手加个chrome扩展: 第一步:建个文件夹,名称比如叫changeColor; 第二步:在changeColor文件夹中建三个文件:manif ...

  8. springBoot 搭建web项目(前后端分离,附项目源代码地址)

    springBoot 搭建web项目(前后端分离,附项目源代码地址)   概述 该项目包含springBoot-example-ui 和 springBoot-example,分别为前端与后端,前后端 ...

  9. windows server 2012 安装 VC14(VC2015) 安装失败解决方案

    原文地址:https://www.cnblogs.com/huoniao/articles/6186021.html 系统环境如下:cmd命令行-输入 systeminfo 如下图 - The VC1 ...

  10. 【ES6】=>含义

    =>是es6语法中的arrow function (x) => x + 6 相当于 function(x){ return x + 6; }; var ids = this.sels.ma ...