欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

dedecms 截取字符串

shiping1 的头像
首页 > DEDECMS > dedecms中字符串截取的几种方法

dedecms中字符串截取的几种方法

2011年6月24日
 

方法1:

{dede:arclist typeid=’9′ titlelen=’40′ orderby=” limit=’0,5′}
<li><a href=”#” target=”_blank”>[field:title /]</a></li>
{/dede:arclist}

说明:arclist,的详细参数说明在后台的模板里面有详细说明,具体可参考那里的介绍。其中:titlelen,可以截取字符串的个数,这里的意思是输出20个汉字

方法2:

{dede:arclist typeid=’9′ titlelen=’40′ orderby=” limit=’0,5′}
<li><a href=”#” target=”_blank”>[field:title function="cn_substr(@me,10)"/]</a></li>
{/dede:arclist}

说明:[field:title function="cn_substr(@me,10)"/],意思就是:截取字段 title 的前10个字符,即5个汉字
来自 http://www.pksafe.cn/blog/884.html
 

列表调用时:[field:body function='cn_substr(@me,810)'/] 或 [field:body function='substr(@me,0,810)'/]

详细页调用时:{dede:field.body function=’ substr(@me,0,810)’/}

使用dede CMS建造文章页面时,偶尔必要截取文章正文的一部分来表现,实情怎么做呢?在网上搜索了一通也没找到谜底,就自己索求尝试了一下。

dede:field.body 是dede cms的文章正文标签,官方辅佐文档中没有先容这个标签有什么属性和参数,可是,对付标签可以使用 function 举办扩展,function所使用的函数可所以体系函数,也可所以自定义的函数。以是我们可以使用function调用函数对字符串做截断操纵以到达我们 的目的。

{dede:field.body function=’ substr(@me,0,810)’/}

substr是PHP的体系函数,浸染是取部份字符串。

语法: string substr(string string, int start, int [length]);

返回值: 字符串

将字符串 string 的第 start 位起的字符串掏出 length 个字符。若 start 为负数,则从字符串尾端算起。若可省略的参数 length 存在,但为负数,则暗示取到倒数第 length 个字符。

譬喻:
echo substr(”abcdef”, 1, 3); // 返回 “bcd”
echo substr(”abcdef”, -2); // 返回 “ef”
echo substr(”abcdef”, -3, 1); // 返回 “d”
echo substr(”abcdef”, 1, -1); // 返回 “bcde”
?>

 

http://blog.xiaoguan.net/497.html

来自 http://hi.baidu.com/xrqzl/item/de6811c8a0ec7c3699b49875
 

[二次开发]收集了一个比较准的截取字符串函数 [复制链接]


dede默认的截取字符串是很不准的,下面收集了一个,你可以直接放到/include/helpers/string.helper.php里面,然后不用dede的cn_substr()和cn_substr_utf8()
直接在模板中调用cutstr即可

/**
 * 中文截取,单字节截取模式
 * @access public
 * @author www.jumingyi.com收集整理,原作者不详
 * @param string $str 需要截取的字符串
 * @param int    $slen 截取的长度
 * @param string $append 结尾加的标识符
 * @return string
 */
if ( ! function_exists('cutstr')){
    function cutstr($str, $length = 0, $append = '') {
        global $cfg_soft_lang;
        $str = trim($str);
        $strlength = strlen($str);
        $charset = strtolower($charset);
        if($cfg_soft_lang=='utf-8'){
            $l = 0;
            while ($i <= $strlength) {
                if (ord($str{$i}) < 0x80) {
                    $l++; $i++;
                } else if (ord($str{$i}) < 0xe0) {
                    $l++; $i += 2;
                } else if (ord($str{$i}) < 0xf0) {
                    $l += 2; $i += 3;
                } else if (ord($str{$i}) < 0xf8) {
                    $l += 1; $i += 4;
                } else if (ord($str{$i}) < 0xfc) {
                    $l += 1; $i += 5;
                } else if (ord($str{$i}) < 0xfe) {
                    $l += 1; $i += 6;
                }
                if ($l >= $length) {
                    $newstr = substr($str, 0, $i);
                    break;
                }
            }
            if($l < $length)return $str;
        } elseif($charset == 'gbk' || $charset == 'gbk2312') {
            if ($length == 0 || $length >= $strlength)return $str;
            while ($i <= $strlength) {
                if (ord($str{$i}) > 0xa0) {
                    $l += 2; $i += 2;
                } else {
                    $l++; $i++;
                }
                if ($l >= $length) {
                    $newstr = substr($str, 0, $i);
                    break;
                }
            }
        }
        if ($append && $str != $newstr) $newstr .= $append;
        return $newstr;
    }
}


 

 

普通分类: