php取整函数大分析 不指定

jed , 2008-11-27 22:24 , 代码编程 , 评论(0) , 阅读(2589) , Via 本站原创
经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已~~主要是:ceil,floor,round,intval

ceil -- 进一法取整
说明
float ceil ( float value )
返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。

例子 1. ceil() 例子

echo ceil(4.3);     // 5
echo ceil(9.999);     // 10
?>  


floor -- 舍去法取整
说明
float floor ( float value )
返回不大于 value 的下一个整数,将 value 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
Tags:
1.时间格式
{dede:field name='pubdate' function='strftime("%Y年%m月%d日 %H:%M:%S","@me")' /}2007年1月1日 18:30:02
{dede:field name='pubdate' function='strftime("%Y-%m-%d %H:%M:%S","@me")' /}2007-1-1 18:30:02
{dede:field name='pubdate' function='strftime("%Y年%m月%d日 %H时%M分%S秒","@me")' /}2007年1月1日 18时30分02秒
{dede:field name='pubdate' function='strftime("%m-%d %H:%M:%S","@me")' /}1-1 18:30:02
{dede:field name='pubdate' function='strftime("%m-%d","@me")' /}1-1
%Y-年
%m-月
%d-日
%H-小时
%M-分
%S-秒
2.24小时内的时间显示红色..
[field:pubdate runphp='yes']
$a="<font color='#ff0000'>";
$b="</font>";
$c=strftime("%Y年%m月%d日 %H:%M:%S","@me");
$ntime = time();
$oneday = 3600 * 24;
if(($ntime - @me)<$oneday) @me = $a.$c.$b;
else @me =$c;
[/field:pubdate]
3.最后更新时间
最后更新时间:{dede:tagname runphp='yes'}@me = date("Y-m-d H:i:s", time());{/dede:tagname}
4.XX天前(21楼kofkof提供)
[field:pubdate runphp='yes']
$today = Floor(time()/(3600 * 24));
$senday= Floor(@me/(3600 * 24));
$updays = $today-$senday;
if($updays==0) @me = "今日";
else @me = $updays."天前";
[/field:pubdate]


{dede:arclist row=11 titlelen=24 orderby=pubdate}

[[field:typelink function='str_replace("a ","a class=ulink ",@me)'/]]

[field:textlink/]

[field:senddate function="strftime('%m-%d',@me)"/]

{/dede:arclist}
栏目 标题 时间
在utf-8编码的情况下,首字母可能是中文或者英文,英文排在前头,中文排在后面,中文需要按照拼音顺序排序,请问如何实现?
如果是GBK编码的,可以直接对字段进行order by ,但是纯utf-8环境下不行。于是在网上找到了如下两种方法,我试的是第二种,还不错。

Ruby代码


conv = Iconv.new("GBK", "utf-8")  




mysql:

Sql代码

SELECT * FROM table ORDER BY CONVERT( NAME  USING gbk ) ;
Tags: ,
因为我的记忆力严重不足,所以这几天写了一个UTF-8的备忘录,结果发现在UTF-8的编码下,mysql不能正确地排序,于是换到php里面用sort,继续失败……汗死……后来一想,可能是因为UTF-8的编码不是按照拼音来编码的,所以才会导致这个原因,另外貌似GBK的字库也不是完全按拼音排序的,"窦"字在GBK里面存在,但是却排在最后面,为了避免错乱,故在排序时把"窦"替换成同音字"豆",即可,于是写了这个排序函数……哎,弄了我一个晚上,结果就8行代码……无语了……

PHP代码

function name_cmp($a, $b) {    
$a = str_replace('窦', '豆', $a);    
$b = str_replace('窦', '豆', $b);    
$a = iconv('UTF-8', 'GBK', $a);    
$b = iconv('UTF-8', 'GBK', $b);    
$a = ereg_replace('^(a|an|the) ', '', strtolower($a));    
$b = ereg_replace('^(a|an|the) ', '', strtolower($b));    
return strcasecmp($a, $b);    
}    
  
usort($array, 'name_cmp');    

关于网上的mysql按拼音查询的两种说法:
1. 用ORDER BY BINARY(字段) ASC的方式查询数据库
    实际上在纯UTF-8的环境下是实现不了了,只有用UTF-8的编码去保存GBK的字符之后才能这样使用,而且不能忘记替换像"窦"这种特殊的字哦……

2. 在数据库中新建一个字段,保存汉字拼音,再利用该字段查询
    这个方法在数据库里面看起来比较直观,不过同样需要把汉字转换成拼音,直接获得拼音的首字母还是不够的.......
    在网上找了份代码,运行的还不错,不过需要下载一个字库文件:
  

RAR压缩包:
下载该附件:http://www.bigasp.com.cn/Uploads/Files/Code/gbk拼音字库.rar

    预览地址:http://www.bigasp.com.cn/extra/gbk2py
    代码如下:

PHP代码

class my_Getpy {    
var $_dat = 'py.dat';    
var $_fd  = false;    
  
function my_Getpy($pdat = '') {    
  if ('' != $pdat)    
  $this->_dat = $pdat;    
}    
  
function load($pdat = '') {    
  if ('' == $pdat)    
  $pdat = $this->_dat;    
  $this->unload();    
  $this->_fd = @fopen($pdat, 'rb');    
  if (!$this->_fd) {    
   trigger_error("unable to load PinYin data file `$pdat`", E_USER_WARNING);    
   return false;    
  }    
  return true;    
}    
  
function unload() {    
  if ($this->_fd) {    
   @fclose($this->_fd);    
   $this->_fd = false;    
  }    
}    
  
function get($zh) {    
  if (strlen($zh) != 2) {    
   trigger_error("`$zh` is not a valid GBK hanzi", E_USER_WARNING);    
   return false;    
  }    
  if (!$this->_fd && !$this->load()) return false;    
  $high = ord($zh[0]) - 0x81;    
  $low  = ord($zh[1]) - 0x40;    
  // 计算偏移位置    
  $nz = ($ord0 - 0x81);    
  $off = ($high<<8) + $low - ($high * 0x40);    
  // 判断 off 值    
  if ($off < 0) {    
   trigger_error("`$zh` is not a valid GBK hanzi-2", E_USER_WARNING);    
   return false;    
  }    
  fseek($this->_fd, $off * 8, SEEK_SET);    
  $ret = fread($this->_fd, 8);    
  $ret = unpack('a8py', $ret);    
  return $ret['py'];    
}    
  
function _my_Getpy() {    
  $this->_unload();    
}    
}
// demo 测试例子  
?>    
  
<title>GBK码汉字转拼音</title>    
<h1>GBK码汉字转拼音</h1>    
  
<form method=get>    
输入汉字试试:<input type="text" size="16" name="zh">    
<input type="submit">    
</form>    
  
<?php    
if ($str = $_GET['zh']) {    
$py = new my_Getpy;        
$len = strlen($str);    
$ret = '';    
for ($i = 0; $i < $len; $i++) {    
  if (ord($str[$i]) > 0x80) {    
   $xx = $py->get(substr($str, $i, 2));    
   $ret .= ($xx ?  $xx . ' ' : substr($str, $i, 2));        
   $i++;    
  } else {    
   $ret .= $str[$i];    
  }    
}    
$py->unload();    
echo "字串 `<font color=red>{$str}</font>` 的拼音是: <font color=red>{$ret}</font>\n";    
}    
?>    
Tags: ,
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]