wdmp升级php,PHP常用的自定义函数

目录

php常用自定义函数类下载

php 设置字符编码为utf-8

header("Content-Type: text/html;charset=utf-8");

GB2312和utf8相互转换

echo iconv('GB2312', 'UTF-8//IGNORE', $str); //将字符串的编码从GB2312转到UTF-8

//ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。

iconv("UTF-8","GB2312//IGNORE",$data);

print_r(iconv_get_encoding()); //得到当前页面编码信息

// 转码

function gbk($str){return iconv('utf-8','gbk',$str);}

function utf8($str){return iconv('gbk','utf-8',$str);}

路径格式化(替换双斜线为单斜线)

function path_formate($str){

return str_replace('\','',$str);

}

获取当前文件的目录

方法一:

define('BASE_PATH',rtrim(str_replace('','/',__DIR__).'/'));

方法二:

define('BASE_DIR', rtrim(str_replace('', '/', dirname(__FILE__)),'/').'/');

打印输出

function dump($var)

{

echo '

';

print_r($var);

echo '

';

}

function vp($var)

{

echo '

';

var_dump($var);

echo '

';

}

function dd($var)

{

echo '

';

var_dump($var);

echo '

';

die;

}

api返回信息

#zs#*

* 数据返回

* @param [int] $code [结果码 200:正常/4**数据问题/5**服务器问题]

* @param [string] $msg [返回的提示信息]

* @param [array] $data [返回的数据]

* @return [string] [最终的json数据]

#fzs#

public function return_msg($code, $msg = '', $data = []) {

#zs#********** 组合数据 **********#fzs#

$return_data['code'] = $code;

$return_data['msg'] = $msg;

$return_data['data'] = $data;

#zs#********** 返回信息并终止脚本 **********#fzs#

echo json_encode($return_data,JSON_UNESCAPED_UNICODE);

die;

}

字符串截取

方法一:

在公共的common.php中

//字符串截取并且超出显示省略号

function subtext($text, $length)

{

if(mb_strlen($text, ‘utf8’) > $length)

return mb_substr($text,0,$length,’utf8′).’ …’;

return $text;

}

在模版中调用则:

{$tops.title | subtext=18}

方法二:

在公共的common.php中

//字符串截取

function cut_str($sourcestr,$cutlength)

{

$returnstr='';

$i=0;

$n=0;

$str_length=strlen($sourcestr);//字符串的字节数

while (($n

{

$temp_str=substr($sourcestr,$i,1);

$ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码

if ($ascnum>=224) //如果ASCII位高与224,

{

$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符

$i=$i+3; //实际Byte计为3

$n++; //字串长度计1

}

elseif ($ascnum>=192) //如果ASCII位高与192,

{

$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符

$i=$i+2; //实际Byte计为2

$n++; //字串长度计1

}

elseif ($ascnum>=65 && $ascnum<=90) //如果是大写字母,

{

$returnstr=$returnstr.substr($sourcestr,$i,1);

$i=$i+1; //实际的Byte数仍计1个

$n++; //但考虑整体美观,大写字母计成一个高位字符

}

else //其他情况下,包括小写字母和半角标点符号,

{

$returnstr=$returnstr.substr($sourcestr,$i,1);

$i=$i+1; //实际的Byte数计1个

$n=$n+0.5; //小写字母和半角标点等与半个高位字符宽...

}

}

if ($str_length>$i){

$returnstr = $returnstr . "...";//超过长度时在尾处加上省略号

}

return $returnstr;

}

在模版中调用则:

{$brand.brand_description|cut_str=###,10}

字符串make_by_id转成makeById

function changestr($string){

if(!is_string($string)){

die('please input string.');

}

if(strpos($string,'_')){

$stringArr=explode('_',$string);

$str='';

foreach ($stringArr as $v){

$str .= ucfirst($v);

}

return $str;

}

}

数组 字符串 对象 json格式的字符串互转

#zs#*

* 对象 转 数组

*

* @param object $obj 对象

* @return array

#fzs#

function object2array(&$object) {

$object = json_decode( json_encode( $object),true);

return $object;

}

#zs#***对象转json数组格式的字符串****#fzs#

function obj2arr($object) {

$json_object = json_encode($object);

echo "

";

var_dump($json_object);die;

$arr = json_decode($json_object, 1);

return $arr;

}

#zs#***json转数组****#fzs#

#zs#*

* [json_to_arr description] json_to_arr 遍历把json转为数组

* @param [type] $jsonstr [description]

* @return boolean [description]

#fzs#

//测试数据:$resp='{"jingdong_omnichannel_order_ship_update_responce":{"code":"0","result":"{"code":"400","message":"系统异常:物流组件中为已取消状态","success":false}"}}';

function json_to_arr2($jsonstr)

{

if (is_string($jsonstr)&&is_array(json_decode($jsonstr, true))) {

$arr = json_decode($jsonstr, true);

foreach ($arr as $k => $v) {

if (is_array($v)) {

foreach ($v as $kk=>$vv){

if(is_string($vv) && is_array(json_decode($vv, true))){

$arr[$k][$kk] = json_decode($vv, true);

}

}

}

if(is_string($v)&&is_sarray(json_decode($v,true))){

$arr[$k]=json_decode($v,true);

}

}

return $arr;

} else {

die('This is not jsonString!');

}

}

#zs#*

* 数组 转 对象

*

* @param array $arr 数组

* @return object

#fzs#

function array_to_object($arr) {

if (gettype($arr) != 'array') {

return;

}

foreach ($arr as $k => $v) {

if (gettype($v) == 'array' || getType($v) == 'object') {

$arr[$k] = (object)array_to_object($v);

}

}

return (object)$arr;

}

$arr = array(

'name'=>'haima',

'age'=>32,

'gender'=>'nan'

);

$a=(Object)($arr); //数组转对象

echo '

';

var_dump($a);

$jsonstring=json_encode($array,JSON_UNESCAPED_UNICODE); //对象转json字符串 不转义中文汉字

echo '

';

var_dump($jsonstring);

$abj=json_decode($array); //json转对象

$array=json_decode($array,true); //json转数组

echo '

';

$b=(Array)($a); //对象转数组

var_dump($b);

强制类型转换

#zs#*

* 强制类型转换

* @param string $data

* @param string $type

* @return mixed

#fzs#

private function typeCast(&$data, $type)

{

switch (strtolower($type)) {

// 数组

case 'a':

$data = (array) $data;

break;

// 数字

case 'd':

$data = (int) $data;

break;

// 浮点

case 'f':

$data = (float) $data;

break;

// 布尔

case 'b':

$data = (boolean) $data;

break;

// 字符串

case 's':

default:

if (is_scalar($data)) {

$data = (string) $data;

} else {

throw new InvalidArgumentException('variable type error:' . gettype($data));

}

}

}

53644.html

php序列化serialize与返回序列化unserialeze

serialize() 把变量和它们的值编码成文本

unserialize() 恢复原先变量

创建日志文件

方法一(适合临时用):

//数组/字符串都可以

file_put_contents( 'log.log', date('Y-m-d H:i:s',time()) .' ' . var_export($_REQUEST,true) . "rn", FILE_APPEND);

方法二:

例: /www.wdmcake.com/data/log/日期/$file文件名

#zs#*

*$str array/str 要写入的内容

*$dir str 日期文件夹里面的新建的文件夹名字 例如 /www.wdmcake.com/data/log/201806/sms_apiaas

*$file string 文件的名字 例:send_log_20180628.log

#fzs#

function wdmlog($str,$dir='log',$file='log')

{

if (!file_exists(ROOT_PATH . 'data/log/' . date('Ym'). '/' . $dir))

{

make_dir(ROOT_PATH . 'data/log/' . date('Ym'). '/' . $dir);

}

$str = is_array($str) ? var_export($str,true):$str;

file_put_contents(ROOT_PATH . 'data/log/' . date('Ym'). '/' . $dir.'/' . $file .'_' . date('Ymd') . '.log', local_date('Y-m-d H:i:s') .' ' . $str . "rn", FILE_APPEND);

}

方法三:

function create_log($data,$merchant,$agency,$file='')

{

if(empty($merchant)) die("商户code不可为空");

if(empty($agency)) die("平台code不可为空");

$file_path = ROOT_PATH . 'logdata/'.$merchant.'/'.$agency;

if(!is_dir($file_path)){

mkdir($file_path, 0777, true);

}

file_put_contents($file_path.'/'.$agency.'_' . $file . date('Ymd',time()) . '.log', date('Y-m-d H:i:s',time()) .' ' . var_export($data,true) . "rn", FILE_APPEND);

}

返回二维数组其中一段的数据

#zs#*

* [slice description] 返回二维数组其中一段的数据

* @param [type] $arr [description] 传二维关联数组

* @param [type] $star [description] 截取的开始位置

* @param [type] $length [description] 截取的长度

* @param [type] $order [description] 0顺序 -1倒序

* @param [type] $preserve [description] 保持索引关系 true - 保留键名 false - 默认。重置键名

* @return [type] [description]

#fzs#

function slice($arr, $star, $length, $order = 0, $preserve = false)

{

foreach ($arr as $key => $value) {

$arr[$key] = array_slice($value, $star, $length, $preserve);

}

if ($order) {

return array_reverse($arr);

}

return $arr;

}

例子:

header('Content-Type=text/html;charset:utf8');

$arr = array(

[

'id' => '1',

'name' => '李四',

'age' => '21',

'gender' => '男',

],

[

'id' => '2',

'name' => '王五',

'age' => '22',

'gender' => '男',

],

);

echo '

';

print_r(slice($arr, 0, 2));

//打印:

// 打印结果:

// Array

// (

// [0] => Array

// (

// [id] => 1

// [name] => 李四

// )

// [1] => Array

// (

// [id] => 2

// [name] => 王五

// )

// )

获取ip地址

方法一

$_SERVER['REMOTE_ADDR']

方法二

#zs#*

* 获得访问的IP

* Enter description here ...

#fzs#

function getIP() {

return isset($_SERVER["HTTP_X_FORWARDED_FOR"])?$_SERVER["HTTP_X_FORWARDED_FOR"]

:(isset($_SERVER["HTTP_CLIENT_IP"])?$_SERVER["HTTP_CLIENT_IP"]

:$_SERVER["REMOTE_ADDR"]);

}

方法三

#zs#*

* 获得用户的真实IP地址

*

* @access public

* @return string

#fzs#

function real_ip()

{

static $realip = NULL;

if ($realip !== NULL)

{

return $realip;

}

if (isset($_SERVER))

{

if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))

{

$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);

#zs# 取X-Forwarded-For中第一个非unknown的有效IP字符串 #fzs#

foreach ($arr AS $ip)

{

$ip = trim($ip);

if ($ip != 'unknown')

{

$realip = $ip;

break;

}

}

}

elseif (isset($_SERVER['HTTP_CLIENT_IP']))

{

$realip = $_SERVER['HTTP_CLIENT_IP'];

}

else

{

if (isset($_SERVER['REMOTE_ADDR']))

{

$realip = $_SERVER['REMOTE_ADDR'];

}

else

{

$realip = '0.0.0.0';

}

}

}

else

{

if (getenv('HTTP_X_FORWARDED_FOR'))

{

$realip = getenv('HTTP_X_FORWARDED_FOR');

}

elseif (getenv('HTTP_CLIENT_IP'))

{

$realip = getenv('HTTP_CLIENT_IP');

}

else

{

$realip = getenv('REMOTE_ADDR');

}

}

preg_match("/[d.]{7,15}/", $realip, $onlineip);

$realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';

return $realip;

}

PHP限制IP访问 只允许指定IP访问 允许*号通配符过滤IP

#zs#*

* 检测访问的ip是否为规定的允许的ip

* Enter description here ...

#fzs#

function check_ip(){

$ALLOWED_IP=array('192.168.2.*','127.0.0.1','192.168.2.49');

$IP=getIP();

$check_ip_arr= explode('.',$IP);//要检测的ip拆分成数组

#限制IP

if(!in_array($IP,$ALLOWED_IP)) {

foreach ($ALLOWED_IP as $val){

if(strpos($val,'*')!==false){//发现有*号替代符

$arr=array();//

$arr=explode('.', $val);

$bl=true;//用于记录循环检测中是否有匹配成功的

for($i=0;$i<4;$i++){

if($arr[$i]!='*'){//不等于* 就要进来检测,如果为*符号替代符就不检查

if($arr[$i]!=$check_ip_arr[$i]){

$bl=false;

break;//终止检查本个ip 继续检查下一个ip

}

}

}//end for

if($bl){//如果是true则找到有一个匹配成功的就返回

return;

die;

}

}

}//end foreach

header('HTTP/1.1 403 Forbidden');

echo "Access forbidden";

die;

}

}

获取地址路径里0到第一个线的部分

function f_dirname($f_path){

return substr($f_path,0,strrpos($f_path,''));

}

获取当前文件所在的文件路径

define('CUR_API_PATH', rtrim(str_replace('', '/', dirname(__FILE__)),'/').'/');

获取随机字符串

#zs#*

* 随机字符

* @param int $length 长度

* @param string $type 类型

* @param int $convert 转换大小写 1大写 0小写

* @return string

#fzs#

function random($length=10, $type='letter', $convert=0)

{

$config = array(

'number'=>'1234567890',

'letter'=>'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',

'string'=>'abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789',

'all'=>'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'

);

if(!isset($config[$type])) $type = 'letter';

$string = $config[$type];

$code = '';

$strlen = strlen($string) -1;

for($i = 0; $i < $length; $i++){

$code .= $string{mt_rand(0, $strlen)};

}

if(!empty($convert)){

$code = ($convert > 0)? strtoupper($code) : strtolower($code);

}

return $code;

}

中文字符串反转

53644.html

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

#zs#*

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

*

* @access public

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

*

* @return bool

#fzs#

function make_dir($folder)

{

$reval = false;

if (!file_exists($folder))

{

#zs# 如果目录不存在则尝试创建该目录 #fzs#

@umask(0);

#zs# 将目录路径拆分成数组 #fzs#

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

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

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

#zs# 遍历包含路径信息的数组 #fzs#

foreach ($atmp[1] AS $val)

{

if ('' != $val)

{

$base .= $val;

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

{

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

$base .= '/';

continue;

}

}

else

{

continue;

}

$base .= '/';

if (!file_exists($base))

{

#zs# 尝试创建目录,如果创建失败则继续循环 #fzs#

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

{

@chmod($base, 0777);

$reval = true;

}

}

}

}

else

{

#zs# 路径已经存在。返回该路径是不是一个目录 #fzs#

$reval = is_dir($folder);

}

clearstatcache();

return $reval;

}

默认获得文件修改时间

function filetime($way,$char='m'){

date_default_timezone_set('PRC');

switch($char){

case 'c':$localtime = date('Y-m-d H:i:s',filectime($way));

break;

case 'm':$localtime = date('Y-m-d H:i:s',filemtime($way));

break;

case 'a':$localtime = date('Y-m-d H:i:s',fileatime($way));

break;

}

return $localtime;

}

判断后缀类型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值