加入收藏 | 设为首页 | 会员中心 | 我要投稿 济宁站长网 (https://www.0537zz.cn/)- 行业智能、边缘计算、专有云、AI硬件、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-07-16 10:34:59 所属栏目:PHP教程 来源:互联网
导读:在编写代码的时候有个神奇的工具总是好的!下面这里收集了 40+ PHP 代码片段,可以帮助你开发PHP 项目。 之前已经为大家分享了《必须收藏的23个php实用代码片段》。 这些PHP 片段对于PHP 初学者也非常有帮助,非常容易学习,让我们开始学习吧~ 24. 从 PHP
  在编写代码的时候有个神奇的工具总是好的!下面这里收集了 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 daysn", $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;
  } 

(编辑:济宁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读