📖 File Reader
<?php
namespace app\admin\common;
use app\BaseController;
use think\facade\Db;
use think\facade\Session;
use think\facade\View;
/**
* 配置信息
*/
class Common_config extends BaseController
{
/**
* 平台配置信息
* @param $field_name 字段名称(空则查询全部)
*/
static function config($field_name='')
{
$where = 1;
if (!empty($field_name)){
$where .= " and field_name in ($field_name)";
}
$list = db::name("config")->where($where)->field("id,name,field_name,value")->select();
$data = array();//定义数组
foreach ($list as $k => $v){
$data[$v["field_name"]] = $v["value"];
}
return $data;
}
/**
* 提取富文本里的图片信息
* @param $contentStr 富文本数据
* @return array
*/
static function getPatternMatchImages($contentStr = ""){
$imgSrcArr = [];
//首先将富文本字符串中的 img 标签进行匹配
//$pattern_imgTag = '/<img\b.*?(?:\>|\/>)/i';
$pattern_imgTag = '/<img[^>]+>/i';
preg_match_all($pattern_imgTag,$contentStr,$matchIMG);
if (isset($matchIMG[0])){
foreach ($matchIMG[0] as $key => $imgTag){
//进一步提取 img标签中的 src属性信息
$pattern_src = '/\bsrc\b\s*=\s*[\'\"]?([^\'\"]*)[\'\"]?/i';
preg_match_all($pattern_src,$imgTag,$matchSrc);
if (isset($matchSrc[1])){
foreach ($matchSrc[1] as $src){
//将匹配到的src信息压入数组
$imgSrcArr[] = $src;
}
}
}
}
//$pattern= '/<img\b.+\bsrc\b\s*=\s*[\'\"]([^\'\"]*)[\'\"]/iU';
return $imgSrcArr;
}
/**
* bese64格式图片存储本地
* @param $base64_string 图片字符串
* @return void
*/
static function bese64_transition($base64_string='')
{
$base64_arr = explode(',',$base64_string);
if($base64_arr[0] != 'data:image/png;base64' && $base64_arr[0] != 'data:image/jpeg;base64'){
$data = ['code'=>400,'msg'=>'格式错误,请传入base64格式'];
return $data;
}
// 去掉Base64字符串开头的数据头部
$base64_string = explode(',', $base64_string)[1];
// 解码Base64字符串
$decoded_data = base64_decode($base64_string);
///生成文件并写入
$file_name = md5(time().rand(0,99999).rand(0,99999).rand(0,99999)).'.png';//文件名
$file_link = '/public/uploads/imageData/'.date("Ymd",time()).'/';
$path = $_SERVER['DOCUMENT_ROOT'].$file_link;//文件地址
if(!is_readable($path)) {is_file($path) or mkdir($path,0777);}
if (file_put_contents($path.$file_name, $decoded_data) !== false) { // 将解码后的数据写入到文件
$data = ['code'=>200,'msg'=>'转换成功','file_link'=>$file_link.$file_name];
return $data;
} else {
$data = ['code'=>400,'msg'=>'转换失败'];
return $data;
}
}
/**
* 地区联动查询
* @param int $region_id 地区id
*/
static function region_d($region_id=0)
{
$list = db::name("region")->where("pid = $region_id")->field("id,pid,name,level")->order("id asc")->select()->toArray();
return $list;
}
/*地区联动(多维数组)*/
static function region_dw()
{
$arr_1 = db::name("region")->where("level = 1")->field("id,pid,name,level")->order("id asc")->select();
$arr_2 = db::name("region")->where("level = 2")->field("id,pid,name,level")->order("id asc")->select();
$arr_3 = db::name("region")->where("level = 3")->field("id,pid,name,level")->order("id asc")->select();
$new_arr2 = [];
foreach($arr_2 as $v2){
$data= [
'value' => $v2['id'],
'label' => $v2['name'],
'pid' => $v2['pid'],
'children'=>[],
];
foreach($arr_3 as $v3){
if($v2['id'] == $v3['pid']){
$data['children'][] = [
'value'=> $v3['id'],
'label' => $v3['name'],
'pid' => $v3['pid'],
'children'=>[],
];
}
}
$new_arr2[]=$data;
}
$new_arr1 = [];
foreach($arr_1 as $v1){
$data= [
'value' => $v1['id'],
'label' => $v1['name'],
'pid' => $v1['pid'],
'children'=>[],
];
foreach($new_arr2 as $nv2){
if($v1['id'] == $nv2['pid']){
$data['children'][] = [
'value' => $nv2['value'],
'label' => $nv2['label'],
'pid' => $nv2['pid'],
'children' => $nv2['children']
];
}
}
$new_arr1[] = $data;
}
// $region = [
// 'value' => '1',
// 'label' => '中国',
// 'children' => $new_arr1,
// ];
return $new_arr1;
}
/**
* 地区联动(多维数组)
* @param in $region_id_guolv 过滤掉id
* @return array
*/
static function region_dw_create($region_id_guolv='')
{
$where = 1;
if (!empty($region_id_guolv)){
$where .= " and id not in ($region_id_guolv)";
}
$region_lindian = db::name("region")->where($where)->field("id as value,pid,name as label")->select()->toArray();
$arr = Common_config::array_reinstallation($region_lindian);
return $arr;
}
/**
* 所管辖的地区id
* @param string $pid 所属上级id
* @return false|string
*/
static function region_team($pid = '')
{
$team_region_id = '';//管辖地区id
while ($pid != ''){
$list = db::name("region")->where("pid in ($pid)")->field("id,name")->select()->toArray();
$list_pid_id = '';
foreach ($list as $v){
$list_pid_id .= $v["id"].',';
}
$team_region_id .= $list_pid_id;
if (!empty($list_pid_id)){
$list_pid_id = substr($list_pid_id,0,strlen($list_pid_id)-1);
}
$pid = $list_pid_id;
}
if (!empty($team_region_id)){
$team_region_id = substr($team_region_id,0,strlen($team_region_id)-1);
}
return $team_region_id;
}
/**
* 数组重装(根据父级重装)
* @param array $arr 全部数组
* @param int $superior_id
* @return array
*/
static function array_reinstallation($arr=[],$superior_id=0)
{
$arr_list = $arr;
$arr_xin = [];
foreach ($arr as $v){
$v_superior_id = $v["pid"];
/*筛选上级是否存在,不存在重置上级id*/
$is_cunzai = 0;
foreach ($arr_list as $v2){
if ($v_superior_id == $v2["value"]){
$is_cunzai = 1;
}
}
$v_superior_id = $is_cunzai==0?0:$v_superior_id;
if ($v_superior_id == $superior_id){
$list = Common_config::array_reinstallation($arr_list,$v["value"]);
$v["children"] = $list;
$arr_xin[] = $v;
}
}
return $arr_xin;
}
/**
* 二维数组标识数字转字母
* @param $num 标识1=A,以此类推
* @return string
*/
static function numberToLetter($num=1) {
$num -= 1;
$letter = '';
while ($num >= 0) {
$letter = chr($num % 26 + 65) . $letter;
$num = intval($num / 26) - 1;
}
return $letter;
}
}