thinkphp字元擷取函式msubstr()
msubstr($str, $start=0, $length, $charset=”utf-8″, $suffix=true)
$str:要擷取的字串
$start=0:開始位置,預設從0開始
$length:擷取長度
$charset=”utf-8″:字元編碼,預設UTF-8
$suffix=true:是否在擷取後的字元後面顯示省略號,預設true顯示,false為不顯示
呼叫如下
{$vo.title|msubstr=5,5,’utf-8′,false}
解釋:擷取字串$vo.title,從第5個字元開始,擷取5個,編碼為UTF-8,不顯示省略號
最近在用thinkphp寫程式的時候遇到 Call to undefined function msubstr() 這樣一個報錯,
原因分析:
在前臺模板中用到了msubstr|msubstr=###,5,5,'utf-8',false 這個函式來擷取字元數量;
問題出現:
開始在本地寫的時候是windows作業系統沒報錯,後來把專案上傳到Linux伺服器的時候訪問前臺報Call to undefined function msubstr()這個錯;
問題排除:
開始在think官方看到有小夥伴們貼出來了要在公共函式庫下定義這個函式;函式如下:
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=false){ if(function_exists("mb_substr")){ if($suffix) return mb_substr($str, $start, $length, $charset)."..."; else return mb_substr($str, $start, $length, $charset); }elseif(function_exists('iconv_substr')) { if($suffix) return iconv_substr($str,$start,$length,$charset)."..."; else return iconv_substr($str,$start,$length,$charset); } $re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"; $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; }
定義完之後在本地可以使用;也看到有小夥伴們說要把這個函式放到Thinkphp核心函式檔案下可以解決Call to undefined function msubstr()報錯問題,放在自己的專案Common目錄下的common.php下說無效,但是不想改動Think的核心檔案方便 以後升級;
解決方案:
還是Linx下的檔案大小寫問題,經我仔細檢視發現,由於專案不會自動生成common.php要手動建,原來我在本地專案下的Common下的common.php的C寫成了大寫,然後檢視官方的核心Common下的common.php的C是小寫。最後把他改成小寫問題解決;
記錄一下,避免以後再犯這種低階錯誤!
相關推薦
thinkphp字元擷取函式msubstr()
ThinkPHP有一個內建字元擷取函式msubstr()如下: msubstr($str, $start=0, $length, $charset=”utf-8″, $suffix=true) $str:要擷取的字串 $start=0:開始位置,預設從0開始 $len
ThinkPHP內建字元擷取函式msubstr(…
ThinkPHP有一個內建字元擷取函式msubstr()如下: msubstr($str, $start=0, $length, $charset=”utf-8″, $suffix=tru
oracle字元擷取函式語法完整版
1)substr函式格式 (俗稱:字元擷取函式) 格式1: substr(string string, int a, intb); 格式2:substr(string string, int a) ; 解釋: 格式1: 1、string 需要擷取的字串
php實現gbk和uft8編碼中英文字元擷取函式的應用
<?php/*utf-8、gb2312都支援的漢字擷取函式cut_str(www.3ppt.com字串, 擷取長度, 開始長度, 編碼);編碼預設為 utf-8開始長度預設為 0*/function cut_str($string, $sublen, $start =
php中文字元擷取無亂碼,php內建函式substr、mb_substr、mb_strcut 比較
mb_strcut(str, start,length) 按位元組來擷取 1個漢字就3個位元組 1個英文就2個位元組 示例:mb_strcut(‘字串php中文字元擷取無亂碼’, 0,10)輸出結果為:“字串”這3個漢字,無亂碼。 mb_s
Thinkphp內建的一箇中英文字串擷取函式,顯示省略號
Thinkphp內建了一個可以媲美smarty的模板引擎,給我們帶來了很大的方便。呼叫函式也一樣,可以和smarty一樣呼叫自己需要的函式,而官方也內建了一些常用的函式供大家呼叫。 比如今天我們說的擷取字串函式,在thinkphp模板引擎裡可以這樣寫:{$vo.title|
ThinkPHP 封裝字串擷取函式
ThinkPHP封裝擷取字串函式網上看到好多種 記錄下 路徑檔案:Common/function.php 一、 /*字串截斷函式+省略號*/ function subtext($text, $length) { if(mb_strlen($text, 'ut
ThinkPHP的擷取字串函式無法顯示省略號的解決方法
對於ThinkPHP的擷取字串函式無法顯示省略號的情況,解決方法如下: 開啟Common/extend.php頁面,修改msubstr函式如下: 效果可以看下具體51搜尋展示http://www.51bt.cc,結合Xunsearch全文檢索技術,可以達到毫秒級的資料搜尋
c語言 解析常用字元操作函式
在c語言中有很多的字元操作函式,而我們經常用到的字元操作函式有strcpy ,strncpy ,strcat ,strcmp ,strlen ,strlwr ,strupr ,gets ,puts ,等等很多很多。
vertica擷取函式-split_part
最近工作中遇到一個問題:vertica資料庫,開發在入時間資料時格式為CST時間格式,導致檢視資料時非常不方便。想了很久,終於想到了一個臨時解決方案。vertica的時間轉換函式均不支援轉換(至少todate,datetimestamp不可以,^^)。資料庫中時間格式如下 開始發現date函式可以將該資料轉
PHP實現刪除字串中任何字元的函式
function delStr($start, $end, $orgenStr) { //讀取要刪除字元位置的前一部分字串,並賦值給$temp //strpos讀取字元第一次出現的位置 //substr讀取指定開始與結束位置的子字串 //echo $before."—".
Linux命令集錦之·字元擷取命令
時間:2018-11-15 記錄:byzqy 字元擷取命令: cut、printf、awk、sed cut $ cut [選項] 檔名 選項: -f 列號:提取第幾列; -d 分隔符:按照指定分隔符分割列; 示例: $ cut -f 2 student.txt # 提取stude
Delphi 字串擷取函式
如果要使用LeftStr,RightStr,MidStr必需引用系統單元StrUtils; 宣告變數Str:string; Str:=HelloWorld; 1,LeftStr(Str,2)=He;//從Str字串變數的最左邊(第一個字元包括第一個字元)開始擷取2個字元; 2,RightStr(Str
字串擷取函式substr()
substr(引數1,引數2[,引數3]); 該系統函式返回被截後的子字串,它接受2個必選引數,引數1為要擷取的字串,引數2為擷取的開始位置,引數3可選,表示擷取長度。 例子:substr(“abcdef”,1);//返回"bcdef",從索引1處開始擷取,如果沒有指定擷取長度,
excel oracle 字串擷取函式
excel left(text,num_chars),從左側開始擷取部分字串 right(text,num_chars),從右側開始擷取部分字串 其中:text表示要擷取的字串,num_chars表示要擷取的字元數 mid(text,start_num,num_chars),中間某位置開始擷取部分字串
字元定位--函式指標 + cal(f, a, b)用梯形公式求函式f(x)在[a, b]上的數值積分
字元定位 #include<stdio.h> char *match(char *s, char ch); int main(void){ char ch, str[80],*p = NULL; scanf("%s", str); getcha
oracle 教程_ 單行函式_字元型別函式
字元型 ASCII CHR chr(39) chr(10) chr(9) LOWER UPPER INITCAP CONCAT || SUBSTR LENGTH INSTR TRIM dump lpad rpad REPLACE translate ('ABCDEFABCXY
PHP中常用的字串擷取函式
1.substr(源字串,起始位置[,長度])-擷取字串返回部分字串 <?php $str ="phpddt.com"; echo substr($str,2);//pddt.com echo substr($str,2,3);//pdd
編寫一個函式reverse_string (char * string),將引數字串中的字串反向排列,不能用字元操作函式
# include <stdio.h> # include <stdlib.h> void reverse_string (char* num) // 形參接受實參傳遞的陣列 { i
總結C語言字元檢測函式:isalnum、isalpha...
前言:最近一直在刷leetcode的題,用到isalnum函式,用man手冊查找了一下,總共有13個相關函式如下: #include <ctype.h> int isalnum(int c); int isalpha(int c); int isascii(i