dedecms字符串截取函數怎么用
來源:本站原創(chuàng)|時間:2021-08-05|欄目:dedecms|點擊: 次
dedecms織夢模板的cn_substr_utf8字符串截取函數商榷
在phpsir看到的這篇文章,主要是說下dedecms 的cn_substr_utf8函數好像有些問題,研究dedecms的朋友可以看下
在dedecms里面 cn_substr_utf8 函數是這樣的
代碼如下:
/**
* utf-8中文截取,單字節(jié)截取模式
*
* @access public
* @param string $str 需要截取的字符串
* @param int $slen 截取的長度
* @param int $startdd 開始標記處
* @return string
*/
if ( ! function_exists('cn_substr_utf8')) {
function cn_substr_utf8($str, $length, $start=0) {
if(strlen($str) < $start+1) {
return '';
}
preg_match_all("/./su", $str, $ar);
$str = '';
$tstr = '';
</p> <p> //為了兼容mysql4.1以下版本,與數據庫varchar一致,這里使用按字節(jié)截取
for ($i=0; isset($ar[0][$i]); $i++) {
if(strlen($tstr) < $start) {
$tstr .= $ar[0][$i];
} else {
if(strlen($str) < $length + strlen($ar[0][$i]) ) {
$str .= $ar[0][$i];
} else {
break;
}
}
}
return $str;
}
}
|
其中
代碼如下:
if(strlen($str) < $length + strlen($ar[0][$i]) )
|
一行可能會造成截取后多了一個字符,可以考慮改為
代碼如下:
if(strlen($str) < $length + strlen($ar[0][$i]) -1 )
|
測試代碼如下
代碼如下:
$f = "你好fasdfa你fasdf#e#";
$pos = strpos($f,'#e#');
var_dump($pos);
var_dump(cn_substr_utf8($f,$pos));
var_dump(cn_substr_utf82($f,$pos));
</p> <p>function cn_substr($str, $slen, $startdd=0) {
global $cfg_soft_lang;
if($cfg_soft_lang=='utf-8') {
return cn_substr_utf8($str, $slen, $startdd);
}
$restr = '';
$c = '';
$str_len = strlen($str);
if($str_len < $startdd+1) {
return '';
}
if($str_len < $startdd + $slen || $slen==0) {
$slen = $str_len - $startdd;
}
$enddd = $startdd + $slen - 1;
for ($i=0;$i<$str_len;$i++) {
if($startdd==0) {
|
上一篇:DEDE織夢data目錄下的sessions文件夾有什么作用可以刪除嗎
欄 目:dedecms
下一篇:DedeCMS下data/mysql_error_trace.inc日志暴露后臺地址漏洞修復
本文標題:dedecms字符串截取函數怎么用
本文地址:http://mengdiqiu.com.cn/a1/dedecms/13683.html
您可能感興趣的文章
- 08-05Dedecms文件目錄結構解說(能知道織夢每個文件有什么用)
- 08-05Dedecms5.7版ckeditor網頁編輯器添加中文字體
- 08-05織夢DedeCMS獲取當前欄目文章數量
- 08-05DedeCMS后臺模塊列表顯示空白的解決辦法
- 08-05DedeCMS自定義字段圖片調用的問題{dede:img ...}解決方法
- 08-05織夢DedeCMS調用顯示discuz里面主題的方法
- 08-05常用的織夢dedecms安全設置集合整理
- 08-05dedecms教程:上傳圖片相對路徑改成絕對路徑方法
- 08-05DedeCMS會員投稿自動加積分改為投稿審核后加積分
- 08-05織夢教程:手把手教你讓dedecms禁止發(fā)布重復文章