php 写一个函数,自己写的和收藏的一写php函数

1、PHP字符串截取,支持gb2312和UTF-8编码。

看了网上很多这样的函数但用起来效果很不理想,所以自己写了一个,初步测试gb2312和UTF8都支持的。<?php

/**

+----------------------------------------------------------

* 功能:字符串截取指定长度

* leo.li hengqin2008@qq.com

+----------------------------------------------------------

* @param string $string 待截取的字符串

* @param int $len 截取的长度

* @param int $start 从第几个字符开始截取

* @param boolean $suffix 是否在截取后的字符串后跟上省略号

+----------------------------------------------------------

* @return string 返回截取后的字符串

+----------------------------------------------------------

*/

function cutStr($string, $len=100, $start=0, $suffix=1) {

$strlen = mb_strlen($string);

while ($strlen) {

$array[] = mb_substr($string, 0, 1, "utf8");

$string = mb_substr($string, 1, $strlen, "utf8");

$strlen = mb_strlen($string);

}

$end = $len + $start;

$str = '';

for ($i = $start; $i < $end; $i++) {

$str.=$array[$i];

}

return $suffix == 1 ? $str . "..." : $str;

}

?>

2、PHP检测一个目录是否存在,不存在创建它,存在返回true。

函数一:代码简洁明了<?php

/**

+----------------------------------------------------------

* 功能:检测一个目录是否存在,不存在则创建它

* leo.li hengqin2008@qq.com

+----------------------------------------------------------

* @param string $path 待检测的目录

+----------------------------------------------------------

* @return boolean

+----------------------------------------------------------

*/

function makeDir($path) {

return is_dir($path) or (makeDir(dirname($path)) and @mkdir($path, 0777));

}

// $myDir = makeDir("./html/phpahz/tk/");//这里带点和不带点不一样

?>

函数二:代码相对较多。

/**

* 检查目标文件夹是否存在,如果不存在则自动创建该目录

*

* @access public

* @param string folder 目录路径。不能使用相对于网站根目录的URL

*

* @return bool

*/

function make_dir($folder) {

$reval = false;

if (!file_exists($folder)) {

/* 如果目录不存在则尝试创建该目录 */

@umask(0);

/* 将目录路径拆分成数组 */

preg_match_all('/([^\/]*)\/?/i', $folder, $atmp);

/* 如果第一个字符为/则当作物理路径处理 */

$base = ($atmp[0][0] == '/') ? '/' : '';

/* 遍历包含路径信息的数组 */

foreach ($atmp[1] AS $val) {

if ('' != $val) {

$base .= $val;

if ('..' == $val || '.' == $val) {

/* 如果目录为.或者..则直接补/继续下一个循环 */

$base .= '/';

continue;

}

} else {

continue;

}

$base .= '/';

if (!file_exists($base)) {

/* 尝试创建目录,如果创建失败则继续循环 */

if (@mkdir(rtrim($base, '/'), 0777)) {

@chmod($base, 0777);

$reval = true;

}

}

}

} else {

/* 路径已经存在。返回该路径是不是一个目录 */

$reval = is_dir($folder);

}

clearstatcache();

return $reval;

}

// $myDir = make_dir("./html/phpahz/tk/"); //这里带点和不带点不一样

?>

3、将中英文字符串转换成数组

/**

+----------------------------------------------------------

* 功能:将中英文字符串转换成数组

* leo.li hengqin2008@qq.com

+----------------------------------------------------------

* @param string $path 需要转换成数组的字符串

+----------------------------------------------------------

* @return array

+----------------------------------------------------------

*/

function get_mb_substr($string) {

$strlen = mb_strlen($string);

while ($strlen) {

$array[] = mb_substr($string, 0, 1, "utf8");

$string = mb_substr($string, 1, $strlen, "utf8");

$strlen = mb_strlen($string);

}

return $array;

}

?>

4、计算两个日期相差 年 月 日

/**

+----------------------------------------------------------

* 功能:计算两个日期相差 年 月 日

* leo.li hengqin2008@qq.com

+----------------------------------------------------------

* @param date $date1 起始日期

* @param date $date2 截止日期日期

+----------------------------------------------------------

* @return array

+----------------------------------------------------------

*/

function DiffDate($date1, $date2) {

if (strtotime($date1) > strtotime($date2)) {

$ymd = $date2;

$date2 = $date1;

$date1 = $ymd;

}

list($y1, $m1, $d1) = explode('-', $date1);

list($y2, $m2, $d2) = explode('-', $date2);

$y = $m = $d = $_m = 0;

$math = ($y2 - $y1) * 12 + $m2 - $m1;

$y = round($math / 12);

$m = intval($math % 12);

$d = (mktime(0, 0, 0, $m2, $d2, $y2) - mktime(0, 0, 0, $m2, $d1, $y2)) / 86400;

if ($d < 0) {

$m -= 1;

$d += date('j', mktime(0, 0, 0, $m2, 0, $y2));

}

$m < 0 && $y -= 1;

return array($y, $m, $d);

}

?>

5、检测字符串是否是utf8,不是则转码为utf8

/**

+----------------------------------------------------------

* 功能:检测字符串是否是utf8,不是则转码为utf8

* leo.li hengqin2008@qq.com

+----------------------------------------------------------

* @param string $string 起始日期

+----------------------------------------------------------

* @return string 返回UTF8的字符串

+----------------------------------------------------------

*/

function checkUtf8($string) {

if ($string == '')

return;

$check = preg_match('%^(?:

[\x09\x0A\x0D\x20-\x7E] # ASCII

| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte

| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs

| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte

| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates

| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3

| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15

| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16

)*$%xs', $string);

return $check == 1 ? $string : iconv('gb2312', 'utf-8', $string);

}

?>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值