1
This commit is contained in:
108
app/admin/service/tool/CommonTool.php
Normal file
108
app/admin/service/tool/CommonTool.php
Normal file
@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\service\tool;
|
||||
|
||||
class CommonTool
|
||||
{
|
||||
|
||||
/**
|
||||
* 下划线转驼峰
|
||||
* @param $str
|
||||
* @return null|string|string[]
|
||||
*/
|
||||
public static function lineToHump($str)
|
||||
{
|
||||
$str = preg_replace_callback('/([-_]+([a-z]{1}))/i', function ($matches) {
|
||||
return strtoupper($matches[2]);
|
||||
}, $str);
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* 驼峰转下划线
|
||||
* @param $str
|
||||
* @return null|string|string[]
|
||||
*/
|
||||
public static function humpToLine($str)
|
||||
{
|
||||
$str = preg_replace_callback('/([A-Z]{1})/', function ($matches) {
|
||||
return '_' . strtolower($matches[0]);
|
||||
}, $str);
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取真实IP
|
||||
* @return mixed
|
||||
*/
|
||||
public static function getRealIp()
|
||||
{
|
||||
$ip = $_SERVER['REMOTE_ADDR'];
|
||||
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
|
||||
foreach ($matches[0] as $xip) {
|
||||
if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
|
||||
$ip = $xip;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
|
||||
$ip = $_SERVER['HTTP_CLIENT_IP'];
|
||||
}elseif (isset($_SERVER['HTTP_CF_CONNECTING_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CF_CONNECTING_IP'])) {
|
||||
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
|
||||
}elseif (isset($_SERVER['HTTP_X_REAL_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_IP'])) {
|
||||
$ip = $_SERVER['HTTP_X_REAL_IP'];
|
||||
}
|
||||
return $ip;
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取文件夹下的所有文件
|
||||
* @param $path
|
||||
* @param $basePath
|
||||
* @return array|mixed
|
||||
*/
|
||||
public static function readDirAllFiles($path, $basePath = '')
|
||||
{
|
||||
list($list, $temp_list) = [[], scandir($path)];
|
||||
empty($basePath) && $basePath = $path;
|
||||
foreach ($temp_list as $file) {
|
||||
if ($file != ".." && $file != ".") {
|
||||
if (is_dir($path . DIRECTORY_SEPARATOR . $file)) {
|
||||
$childFiles = self::readDirAllFiles($path . DIRECTORY_SEPARATOR . $file, $basePath);
|
||||
$list = array_merge($childFiles, $list);
|
||||
}else {
|
||||
$filePath = $path . DIRECTORY_SEPARATOR . $file;
|
||||
$fileName = str_replace($basePath . DIRECTORY_SEPARATOR, '', $filePath);
|
||||
$list[$fileName] = $filePath;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 模板值替换
|
||||
* @param $string
|
||||
* @param $array
|
||||
* @return mixed
|
||||
*/
|
||||
public static function replaceTemplate($string, $array)
|
||||
{
|
||||
foreach ($array as $key => $val) {
|
||||
if (is_null($val)) $val = '';
|
||||
$string = str_replace("{{" . $key . "}}", $val, $string);
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
|
||||
public static function replaceArrayString(?string $arrayString): string
|
||||
{
|
||||
$arrayString = str_replace('array (', '[', $arrayString);
|
||||
$arrayString = str_replace(')', ']', $arrayString);
|
||||
$arrayString = str_replace('=>
|
||||
[', '=> [', $arrayString);
|
||||
return $arrayString;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user