PHP实用代码

PHP取文件后缀名
1、利用 pathinfo 函数 
$urlname = 'http://www.neatcn.com/attachment/test.gif';  
$path_info = pathinfo($urlname );  
echo $path_info['extension'];  
 
2、discuz里面利用strrchr取得后缀名
function fileext($filename) {  
    return trim(substr(strrchr($filename, '.'), 1, 10));  

//个人建议在$filename上加上basename(),这样可以对路径也处理一下
3、利用end函数
$filename = 'http://www.neatcn.com/attachments/test.gif';  
echo(end(explode(".",$filename )));//split之类的都可以  
最早以前判断都是判断strpos取得最后一个.的所在位置,现在都用strrchr了,毕竟它可以安全的操作二进制文件。
还可以通过finfo::file($filename);来取得文件的类型,然后再进行处理,不过。这已经不算是取文件名了。
大至是以上三种,其他一些方法类似的就不一一列出了
===================================================
产生随机数.数字越小出现的概率越大
引文:http://www.skiyo.cn/article/Skiyo-75-1228209727.html
今天在PHPChina上面有人问这个问题.我琢磨了半个小时才搞定.
先写一个一般的思路.
$arr = array(); for($i=0;$i<=9;$i++){    for($j=0;$j<=(9-$i);$j--){      $arr[] = $i;   } } $rand = array_rand($arr); 这种的缺点就是当数据大的时候.就会非常的慢.
其实这个是个脑筋急转弯.我想了想.想出个好办法.
<?php
function fun(){
     $num = rand(0,9); //10以内的数字平均分配
     $num2 = rand(0,9); 
    ($num2<=$num) ? $return.=$num2 : $return.=$num; 
    return $return;
}
function totalStr($haystack, $needle,$i = 0){
     while(strpos($haystack,$needle) !== false) {
         $haystack = substr($haystack, (strpos($haystack,$needle) + 1)); 
        $i++;
     }
     return $i;
}
for ($i=0;$i<=1000;$i++){  $str .= fun(); }
for ($i=0;$i<=9;$i++){     echo totalStr($str,"$i")."/n"; //0-9出现的次数 } 
什么原理我也说不太清楚.就是一种感觉..
大家自己去理解吧..O(∩_∩)O
还有另外一位大哥的解决办法:
function getRandomByFactor($max,$factor=2){   $c = rand(0,pow($max,$factor));   return $max - ceil(pow($c,1/$factor));  } 不过我还是更偏向于我的解决方案.后来经过高人指点.我将这个函数最精简化.大家看一下就明白了.
function getRand($min,$max) {      $num=rand($min,$max);      return rand($min,$num);  }
===================================================
星座函数,选择月,日算出星座的函数function checkxz(m,d){
 var renum=/^/d+$/i;
 if( !(renum.test(m) && renum.test(d) && m>0 && d>0 ) ) return "";

 m=parseInt(m);
 d=parseInt(d);
 var xzi;
 var XZDict = '摩羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手';
 var Zone = new Array(1222,120,219,321,421,521,622,723,823,923,1023,1122,1222);
  if((100*m+d)>=Zone[0]||(100*m+d)<Zone[1])
   xzi=0;
  else
   for(xzi=1;xzi<12;xzi++){
    if((100*m+d)>=Zone[xzi]&&(100*m+d)<Zone[xzi+1])
    break;
   }
  result = XZDict.substring(2*xzi,2*xzi+2)+'座-'+((xzi==0)?12:xzi);
  return result;
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值