几个简单又实用的PHP函数
发布时间:2020-05-25 08:02:16 所属栏目:PHP 来源:互联网
导读:几个简单又实用的PHP函数
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 /* * *************************
* 生成随机字符串,可以自己扩展 //若想唯一,只需在开头加上用户id
* $type可以为:upper(只生成大写字母),lower(只生成小写字母),number(只生成数字)
* $len为长度,定义字符串长度
* mark 2017/8/15
* ************************** */
function _random($type,$len = 0) {
$new = '';
$string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; //数据池
if ($type == 'upper') {
for ($i = 0; $i < $len; $i++) {
$new .= $string[mt_rand(36,61)];
}
return $new;
}
if ($type == 'lower') {
for ($i = 0; $i < $len; $i++) {
$new .= $string[mt_rand(10,35)];
}
return $new;
}
if ($type == 'number') {
for ($i = 0; $i < $len; $i++) {
$new .= $string[mt_rand(0,9)];
}
return $new;
}
}
//计算该月有几天
function getdaysInmonth($month,$year) {
$days = '';
if ($month == 1 || $month == 3 || $month == 5 || $month == 7 || $month == 8 || $month == 10 || $month == 12)
$days = 31;
else if ($month == 4 || $month == 6 || $month == 9 || $month == 11)
$days = 30;
else if ($month == 2) {
if (isLeapyear($year)) {
$days = 29;
} else {
$days = 28;
}
}
return ($days);
}
//判断是否为润年
function isLeapyear($year) {
if ((($year % 4) == 0) && (($year % 100) != 0) || (($year % 400) == 0)) {
return (true);
} else {
return (false);
}
}
//生成订单15位
function auto_order($ord = 0) {
//自动生成订单号 传入参数为0 或者1 0为本地 1为线上订单
if ($ord == 0) {
$str = '00' . time() . rand(1000,9999); //00 本地订单
} else {
$str = '99' . time() . rand(1000,9999); //11 线上订单
}
return $str;
}
//生成订单15位
function auto_new_order($ord = 0) {
srand(time());
//自动生成订单号 传入参数为0 或者1 0为本地 1为线上订单
if ($ord == 0) {
$str = '00' . time() . mt_rand(100000,999999); //00 本地订单
} else {
$str = '11' . time() . mt_rand(100000,999999); //11 线上订单
}
return $str;
}
/**
* 检测是否为UTF8编码
* @param $string 检测字符串
* @return bool
*/
function is_utf8($string) {
return preg_match('%^(?:
[x09x0Ax0Dx20-x7E] # ASCII
| [xC2-xDF][x80-xBF] # non-overlong 2-byte
| xE0[xA0-xBF][x80-xBF] # excluding overlongs
| [xE1-xECxEExEF][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);
}
//处理json字符中的特殊字符
function getJsonToArr($result,$return_array=true)
{
$tempArr = NULL;
$result = preg_replace('/([^])(":)(d{9,})(,")/i','${1}${2}"${3}"${4}',$result); //taobao bug,number >2^32
$tempArr = json_decode($result,$return_array);
if ($tempArr == NULL) {
$patterns = array('/,+s*}/','/,+s*]/','/"s+|s+"/','/n|r|t/','//','/ss+/');
$replacements = array('}',']','"',' ','',' ');
$result = preg_replace($patterns,$replacements,$result);
$tempArr = json_decode($result,$return_array);
}
return $tempArr;
}
//非法字符过滤函数
function has_unsafeword($str) {
$regex = "//|~|!|@|#|$|%|^|&|*|(|)|_|+|{|}|:|<|>|?|[|]|.|/|;|'|`|=|||/";
return preg_replace($regex,"",$str);
}
//去空格,以及字符添加斜杠
function _trim(&$value) {
Return addslashes(trim($value));
}
/**
* 将多维数组转为一维数组
* @param array $arr
* @return array
*/
function ArrMd2Ud($arr) {
#将数值第一元素作为容器,作地址赋值。
$ar_room = &$arr[key($arr)];
#第一容器不是数组进去转呀
if (!is_array($ar_room)) {
#转为成数组
$ar_room = array($ar_room);
}
#指针下移
next($arr);
#遍历
while (list($k,$v) = each($arr)) {
#是数组就递归深挖,不是就转成数组
$v = is_array($v) ? call_user_func(__FUNCTION__,$v) : array($v);
#递归合并
$ar_room = array_merge_recursive($ar_room,$v);
#释放当前下标的数组元素
unset($arr[$k]);
}
return $ar_room;
}
/**
* 判断是PC端还是wap端访问
* @return type判断手机移动设备访问
*/
function isMobile()
{
// 如果有HTTP_X_WAP_PROFILE则一定是移动设备
if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
{
return true;
}
// 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
if (isset ($_SERVER['HTTP_VIA']))
{
// 找不到为flase,否则为true
return stristr($_SERVER['HTTP_VIA'],"wap") ? true : false;
}
// 脑残法,判断手机发送的客户端标志,兼容性有待提高
if (isset ($_SERVER['HTTP_USER_AGENT']))
{
$clientkeywords = array ('nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile'
);
// 从HTTP_USER_AGENT中查找手机浏览器的关键字
if (preg_match("/(" . implode('|',$clientkeywords) . ")/i",strtolower($_SERVER['HTTP_USER_AGENT'])))
{
return true;
}
}
// 协议法,因为有可能不准确,放到最后判断
if (isset ($_SERVER['HTTP_ACCEPT']))
{
// 如果只支持wml并且不支持html那一定是移动设备
// 如果支持wml和html但是wml在html之前则是移动设备
if ((strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'],'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'],'text/html'))))
{
return true;
}
}
return false;
}
//判断是否为安卓手机
public function isAndroid()
{
if(isset($_SERVER['HTTP_USER_AGENT'])){
$agent = strtolower($_SERVER['HTTP_USER_AGENT']);
if(strpos($agent,'android') !== false)
return true;
}
return false;
}
//判断是否为iphone或者ipad
public function isIos()
{
if(isset($_SERVER['HTTP_USER_AGENT'])){
$agent = strtolower($_SERVER['HTTP_USER_AGENT']);
if(strpos($agent,'iphone')||strpos($agent,'ipad'))
return true;
}
return false;
}
//判断是否为微信内置浏览器打开
public function isWechet()
{
if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],'MicroMessenger') !== false){
return true;
}
return false;
}
//整合到一起,判断当前设备,1:安卓;2:IOS;3:微信;0:未知
public function isDevice()
{
if($_SERVER['HTTP_USER_AGENT']){
$agent = strtolower($_SERVER['HTTP_USER_AGENT']);
if(strpos($agent,'micromessenger') !== false)
return 3;
elseif(strpos($agent,'ipad'))
return 2;
else
return 1;
}
return 0;
}
/**
* 日期转换成几分钟前
*/
public function formatTime($date) {
$timer = strtotime($date);
$diff = $_SERVER['REQUEST_TIME'] - $timer;
$day = floor($diff / 86400);
$free = $diff % 86400;
if($day > 0) {
if(15 < $day && $day <30){
return "半个月前";
}elseif(30 <= $day && $day <90){
return "1个月前";
}elseif(90 <= $day && $day <187){
return "3个月前";
}elseif(187 <= $day && $day <365){
return "半年前";
}elseif(365 <= $day){
return "1年前";
}else{
return $day."天前";
}
}else{
if($free>0){
$hour = floor($free / 3600);
$free = $free % 3600;
if($hour>0){
return $hour."小时前";
}else{
if($free>0){
$min = floor($free / 60);
$free = $free % 60;
if($min>0){
return $min."分钟前";
}else{
if($free>0){
return $free."秒前";
}else{
return '刚刚';
}
}
}else{
return '刚刚';
}
}
}else{
return '刚刚';
}
}
}
/**
* 截取长度
*/
public function getSubString($rawString,$length='100',$etc = '...',$isStripTag=true){
$rawString = str_replace('_baidu_page_break_tag_',$rawString);
$result = '';
if($isStripTag)
$string = html_entity_decode(trim(strip_tags($rawString)),ENT_QUOTES,'UTF-8');
else
$string = trim($rawString);
$strlen = strlen($string);
for ($i = 0; (($i < $strlen) && ($length > 0)); $i++){
if ($number = strpos(str_pad(decbin(ord(substr($string,$i,1))),8,'0',STR_PAD_LEFT),'0'))
{
if ($length < 1.0){
break;
}
$result .= substr($string,$number);
$length -= 1.0;
$i += $number - 1;
}else{
$result .= substr($string,1);
$length -= 0.5;
}
}
if($isStripTag)
$result = htmlspecialchars($result,'UTF-8');
if ($i < $strlen){
$result .= $etc;
}
return $result;
}
/**
* utf-8和gb2312自动转化
* @param unknown $string
* @param string $outEncoding
* @return unknown|string
*/
function safeEncoding($string,$outEncoding = 'UTF-8')
{
$encoding = "UTF-8";
for($i = 0; $i < strlen ( $string ); $i ++) {
if (ord ( $string {$i} ) < 128)
continue;
if ((ord ( $string {$i} ) & 224) == 224) {
// 第一个字节判断通过
$char = $string {++ $i};
if ((ord ( $char ) & 128) == 128) {
// 第二个字节判断通过
$char = $string {++ $i};
if ((ord ( $char ) & 128) == 128) {
$encoding = "UTF-8";
break;
}
}
}
if ((ord ( $string {$i} ) & 192) == 192) {
// 第一个字节判断通过
$char = $string {++ $i};
if ((ord ( $char ) & 128) == 128) {
// 第二个字节判断通过
$encoding = "GB2312";
break;
}
}
}
if (strtoupper ( $encoding ) == strtoupper ( $outEncoding ))
return $string;
else
return @iconv ( $encoding,$outEncoding,$string );
}
/**
*对内容中的关键词添加链接
*只处理第一次出现的关键词,对已有链接的关键不会再加链接,支持中英文
*$content:string 原字符串
*$keyword:string 关键词
*$link:string,链接
*/
function yang_keyword_link($content,$keyword,$link){
//排除图片中的关键词
$content = preg_replace( '|(<img[^>]*?)('.$keyword.')([^>]*?>)|U','$1%&&&&&%$3',$content);
$regEx = '/(?!((<.*?)|(<a.*?)))('.$keyword.')(?!(([^<>]*?)>)|([^>]*?</a>))/si';
$url='<a href="'.$link.'" target="_blank" class="content_guanjianci">'.$keyword.'</a>';
$content = preg_replace($regEx,$url,$content,1);
//还原图片中的关键词
$content=str_replace('%&&&&&%',$content);
return $content;
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
