msubstr返回格式不統一

2021-06-20 15:03:51 字數 1354 閱讀 8832

核心/common/extend.php 55行原**

function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)

$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]|[\xf0-\xff][\x80-\xbf]/";

$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";

$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";

$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";

preg_match_all($re[$charset], $str, $match);

$slice = join("",array_slice($match[0], $start, $length));

if($suffix) return $slice."…";

return $slice;

}

原因:當傳入$str為''時,其他兩種方法均返回空字串,而iconv_substr會返回false,而把false直接用add方法寫入資料會產生錯誤,而無法寫入資料庫。

修正後**:

function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)

return $ret;

}$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]|[\xf0-\xff][\x80-\xbf]/";

$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";

$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";

$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";

preg_match_all($re[$charset], $str, $match);

$slice = join("",array_slice($match[0], $start, $length));

if($suffix) return $slice."…";

return $slice;

}

統一返回格式

首先是乙個統一返回格式的主類 data noargsconstructor allargsconstructor public class apiresult public apiresult apienum apienum public apiresult string msg 然後是運用列舉定義...

json統一返回格式

一般我們會使用這樣的封裝 public class result但是這樣封裝的壞處 1.使用不方便 每次都需要new 我們呼叫者只關心成功時返回什麼資料,失敗時code及msg 2.不能保證code和msg統一 多人協同開發時 針對第一條我們改進為 public class result 針對第二條...

用列舉處理全域性統一返回格式

我們在開發中肯定會遇到以下情況 程式設計師a的介面返回格式 程式設計師b的介面返回格式 若是這種情況我們就懵了,what are you doing?然而則沒人能回答我的答案。造成該情況是由於團隊之間沒有定義好一套統一的返回格式,當我遇到上述情況時,我也是很心累的。所有我想定義乙個統一的返回格式列舉...