1、将数组转换为对象
/**
* 将数组转换为对象
* @param array $data 数组
* @return 返回对象(object)
*/
function array2object($array) {
if (is_array($array)) {
$obj = new StdClass();
foreach ($array as $key => $val){
$obj->$key = $val;
}
}
else { $obj = $array; }
return $obj;
}
2、将对象转换为数组
/**
* 将对象转换为数组
* @param object $data 对象
* @return array 返回数组格式,如果,data为空,则返回空数组
*/
function object2array($object) {
if (is_object($object)) {
foreach ($object as $key => $value) {
$array[$key] = $value;
}
}
else {
$array = $object;
}
return $array;
}
3、将字符串转换为数组
/**
* 将字符串转换为数组
* @param string $data 字符串
* @return array 返回数组格式,如果,data为空,则返回空数组
*/
function string2array($data) {
$data = trim($data);
if($data == '') return array();
if(strpos($data, 'array')===0){
@eval("$array = $data;");
}else{
if(strpos($data, '{\\')===0) $data = stripslashes($data);
$array=json_decode($data,true);
if(strtolower(CHARSET)=='gbk'){
$array = mult_iconv("UTF-8", "GBK//IGNORE", $array);
}
}
return $array;
}
4、将数组转换为字符串
**
* 将数组转换为字符串
*
* @param array $data 数组
* @param bool $isformdata 如果为0,则不使用new_stripslashes处理,可选参数,默认为1
* @return string 返回字符串,如果,data为空,则返回空
*/
function array2string($data, $isformdata = 1) {
if($data == '' || empty($data)) return '';
if($isformdata) $data = new_stripslashes($data);
if(strtolower(CHARSET)=='gbk'){
$data = mult_iconv("GBK", "UTF-8", $data);
}
if (version_compare(PHP_VERSION,'5.3.0','<')){
return addslashes(json_encode($data));
}else{
return addslashes(json_encode($data,JSON_FORCE_OBJECT));
}
}
5、将文本格式成适合js输出的字符串
/**
* 将文本格式成适合js输出的字符串
* @param string $string 需要处理的字符串
* @param intval $isjs 是否执行字符串格式化,默认为执行
* @return string 处理后的字符串
*/
function format_js($string, $isjs = 1) {
$string = addslashes(str_replace(array("\r", "\n", "\t"), array('', '', ''), $string));
return $isjs ? 'document.write("'.$string.'");' : $string;
}
6、返回经addslashes(转义)处理过的字符串或数组
/**
* 返回经addslashes(转义)处理过的字符串或数组
* @param $string 需要处理的字符串或数组
* @return mixed
*/
function new_addslashes($string){
if(!is_array($string)) return addslashes($string);
foreach($string as $key => $val) $string[$key] = new_addslashes($val);
return $string;
}
7、返回经stripslashes(删除反斜杠)处理过的字符串或数组
/**
* 返回经stripslashes(删除反斜杠)处理过的字符串或数组
* @param $string 需要处理的字符串或数组
* @return mixed
*/
function new_stripslashes($string) {
if(!is_array($string)) return stripslashes($string);
foreach($string as $key => $val) $string[$key] = new_stripslashes($val);
return $string;
}
8、返回经htmlspecialchars(字符转html)处理过的字符串或数组
/**
* 返回经htmlspecialchars(字符转html)处理过的字符串或数组
* @param $obj 需要处理的字符串或数组
* @return mixed
*/
function new_html_special_chars($string) {
$encoding = 'utf-8';
if(strtolower(CHARSET)=='gbk') $encoding = 'ISO-8859-15';
if(!is_array($string)) return htmlspecialchars($string,ENT_QUOTES,$encoding);
foreach($string as $key => $val) $string[$key] = new_html_special_chars($val);
return $string;
}
function new_html_entity_decode($string) {
$encoding = 'utf-8';
if(strtolower(CHARSET)=='gbk') $encoding = 'ISO-8859-15';
return html_entity_decode($string,ENT_QUOTES,$encoding);
}
function new_htmlentities($string) {
$encoding = 'utf-8';
if(strtolower(CHARSET)=='gbk') $encoding = 'ISO-8859-15';
return htmlentities($string,ENT_QUOTES,$encoding);
}
9、安全过滤函数
/**
* 安全过滤函数
*
* @param $string
* @return string
*/
function safe_replace($string) {
$string = str_replace('%20','',$string);
$string = str_replace('%27','',$string);
$string = str_replace('%2527','',$string);
$string = str_replace('*','',$string);
$string = str_replace('"','"',$string);
$string = str_replace("'",'',$string);
$string = str_replace('"','',$string);
$string = str_replace(';','',$string);
$string = str_replace('<','<',$string);
$string = str_replace('>','>',$string);
$string = str_replace("{",'',$string);
$string = str_replace('}','',$string);
$string = str_replace('\\','',$string);
return $string;
}
10、xss过滤函数
11、过滤ASCII码从0-28的控制字符
/**
* 过滤ASCII码从0-28的控制字符
* @return String
*/
function trim_unsafe_control_chars($str) {
$rule = '/[' . chr ( 1 ) . '-' . chr ( 8 ) . chr ( 11 ) . '-' . chr ( 12 ) . chr ( 14 ) . '-' . chr ( 31 ) . ']*/';
return str_replace ( chr ( 0 ), '', preg_replace ( $rule, '', $str ) );
}
12、格式化文本域内容
/**
* 格式化文本域内容
*
* @param $string 文本域内容
* @return string
*/
function trim_textarea($string) {
$string = nl2br ( str_replace ( ' ', ' ', $string ) );
return $string;
}
13、将文本格式成适合js输出的字符串
/**
* 将文本格式成适合js输出的字符串
* @param string $string 需要处理的字符串
* @param intval $isjs 是否执行字符串格式化,默认为执行
* @return string 处理后的字符串
*/
function format_js($string, $isjs = 1) {
$string = addslashes(str_replace(array("\r", "\n", "\t"), array('', '', ''), $string));
return $isjs ? 'document.write("'.$string.'");' : $string;
}
14、转义 javascript 代码标记
/**
* 转义 javascript 代码标记
*
* @param $str
* @return mixed
*/
function trim_script($str) {
if(is_array($str)){
foreach ($str as $key => $val){
$str[$key] = trim_script($val);
}
}else{
$str = preg_replace ( '/\<([\/]?)script([^\>]*?)\>/si', '<\script\>', $str );
$str = preg_replace ( '/\<([\/]?)iframe([^\>]*?)\>/si', '<\iframe\>', $str );
$str = preg_replace ( '/\<([\/]?)frame([^\>]*?)\>/si', '<\frame\>', $str );
$str = str_replace ( 'javascript:', 'javascript:', $str );
}
return $str;
}
15、数组转码
/**
* 数组转码
*/
function mult_iconv($in_charset,$out_charset,$data){
if(substr($out_charset,-8)=='//IGNORE'){
$out_charset=substr($out_charset,0,-8);
}
if(is_array($data)){
foreach($data as $key => $value){
if(is_array($value)){
$key=iconv($in_charset,$out_charset.'//IGNORE',$key);
$rtn[$key]=mult_iconv($in_charset,$out_charset,$value);
}elseif(is_string($key) || is_string($value)){
if(is_string($key)){
$key=iconv($in_charset,$out_charset.'//IGNORE',$key);
}
if(is_string($value)){
$value=iconv($in_charset,$out_charset.'//IGNORE',$value);
}
$rtn[$key]=$value;
}else{
$rtn[$key]=$value;
}
}
}elseif(is_string($data)){
$rtn=iconv($in_charset,$out_charset.'//IGNORE',$data);
}else{
$rtn=$data;
}
return $rtn;
}
16、php用逗号格式化数字
<?php
/****
* @author Amos Wang
* @param $number
* @return mixed
*/
function numberFormat($number)
{
if(!is_numeric($number)){
return $number; // 只处理数字
}
list($integer,$decimal) = explode('.',$number);
$number_temp = ""; // 临时计数
$len = strlen($integer);
$sublen = 3; // 每隔几位数加逗号
//处理整数部分
$i=1;
while(true){
$pos = $i * $sublen;
$join = empty($number_temp) ? "" : ","; // 连接符
$number_temp = substr($integer,(0-$pos),$sublen).$join.$number_temp;
if(($pos + $sublen) > $len){
$number_temp = substr($integer,0,($len - $pos)).$join.$number_temp;
break;
}
$i++;
}
//处理小数部分
if(!empty($decimal)){
$number_temp = !empty($number_temp) ? $number_temp.".".$decimal : "0.".$decimal;
}
return $number_temp;
}
$result = numberFormat(1234567.5564);
print_r($result);
?>
17、数组去重
/**
* 数组去重
*/
function getArray($arr){
$count = count($arr);
$arrs = array();
for ($i=0;$i<$count;$i++){
$a = $arr[$i];
unset($arr[$i]);
if(!in_array($a,$arr)){
$arrs[] = $a;
}
}
return $arrs;
}
/**
* 二维数组去重
*/
function assoc_unique($arr, $key) {
$tmp_arr = array();
foreach ($arr as $k => $v) {
if (in_array($v[$key], $tmp_arr)) {
unset($arr[$k]);
} else {
$tmp_arr[] = $v[$key];
}
}
sort($arr);
return $arr;
}
18、字符串去重
//字符串去重
function unique($str){
//字符串中,需要去重的数据是以数字和“,”号连接的字符串,如$str,explode()是用逗号为分割,变成一个新的数组,见打印
$arr = explode(',', $str);
$arr = array_unique($arr);//内置数组去重算法
$data = implode(',', $arr);
$data = trim($data,',');//trim — 去除字符串首尾处的空白字符(或者其他字符),假如不使用,后面会多个逗号
return $data;//返回值,返回到函数外部
}
19、数组排序
/**
* 对查询结果集进行排序
* @access public
* @param array $list 查询结果
* @param string $field 排序的字段名
* @param array $sortby 排序类型
* asc正向排序 desc逆向排序 nat自然排序
* @return array
*/
function list_sort_by($list, $field, $sortby = 'asc')
{
if (is_array($list)) {
$refer = $resultSet = array();
foreach ($list as $i => $data) {
$refer[$i] = &$data[$field];
}
switch ($sortby) {
case 'asc': // 正向排序
asort($refer);
break;
case 'desc': // 逆向排序
arsort($refer);
break;
case 'nat': // 自然排序
natcasesort($refer);
break;
}
foreach ($refer as $key => $val) {
$resultSet[] = &$list[$key];
}
return $resultSet;
}
return false;
}
//数组排序
private function arrayOrder($array, $vkey)
{
$newArr = array();
foreach ($array as $key => $v) {
$newArr[$key][$vkey] = $v[$vkey];
}
array_multisort($newArr, SORT_DESC, $array);//SORT_DESC为降序,SORT_ASC为升序
return $array;
}
$data = [];
$order = array('dir' => SORT_DESC, 'mtime' => SORT_DESC);
multisort($data, $order);
/**
* 对数组进行多键值排序
* @param $array
* @param $order
*/
public function multisort(&$array, $order)
{
usort($array, function ($a, $b) use ($order) {
$sortMap = array('asc' => SORT_ASC, 'desc' => SORT_DESC);
$aObj = (object)$a;
$bObj = (object)$b;
if (is_string($order)) {
$order = array($order);
}
if (is_object($order)) {
$order = (array)$order;
}
$i = 0;
$cOrder = count($order);
foreach ($order as $field => $dir) {
if (is_numeric($field)) {
$field = $dir;
$dir = SORT_ASC;
}
// Goto next step when a mis-match is found.
if ($aObj->$field != $bObj->$field) {
break;
}
// All fields match return 0
if (++$i === $cOrder) {
return 0;
}
}
if ( ! is_numeric($dir)) {
$dir = strtolower($dir);
$dir = $sortMap[$dir];
}
$d = ($dir === SORT_DESC) ? -1 : 1;
$c = ($aObj->$field < $bObj->$field) ? -1 : 1;
return $c * $d;
});
}
20、兼容低版本的array_column
array_column() 返回输入数组中某个单一列的值。
/**
* 兼容低版本的array_column
*
* @param $array 多维数组
* @param $column_key 需要返回值的列
* @param $index_key 可选。作为返回数组的索引/键的列。
*
* @return array 返回一个数组,数组的值为输入数组中某个单一列的值。
*/
function hui_array_column($array, $column_key, $index_key = null)
{
if (function_exists('array_column')) {
return array_column($array, $column_key, $index_key);
}
$result = array();
foreach ($array as $key => $value) {
if ( ! is_array($value)) {
continue;
}
if ($column_key) {
if ( ! isset($value[$column_key])) {
continue;
}
$tmp = $value[$column_key];
} else {
$tmp = $value;
}
if ($index_key) {
$key = isset($value[$index_key]) ? $value[$index_key] : $key;
}
$result[$key] = $tmp;
}
return $result;
}
21、把返回的数据集转换成Tree
22、判断字符串是否为已经序列化过
/**
* 判断字符串是否为已经序列化过
* @param $str
* @return bool
*/
function cmf_is_serialized($str)
{
return ($str == serialize(false) || @unserialize($str) !== false);
}
23、截取指定两个字符之间字符串
/*
* php截取指定两个字符之间字符串
* */
function get_between_str($input, $start, $end)
{
$substr = substr($input, strlen($start) + strpos($input, $start), (strlen($input) - strpos($input, $end)) * (-1));
return $substr;
}

© 版权声明
文章未经允许请勿转载。
THE END
暂无评论内容