zoukankan      html  css  js  c++  java
  • 织梦之路——织梦自定义函数教程

    织梦有很多内置函数,比如常见的 mydate、html2text等函数,但这些函数对自定义程度高的项目来说是远远不够的,所以我们需要自己定义函数使用,就像使用mydate一样!

    1、找到自定函数文件 ——  include/extend.func.php

    2、添加自定义函数(可以使用全局变量 $GLOBALS),我这里写了一个自定义字符等宽度值截取函数,用于样式与字数匹配的函数。

    /**
     *  utf-8中文截取,mb_string 截取模式  (自定义函数)
     *
     * @access    public
     * @param     string  $str  需要截取的字符串
     * @param     int  $slen  截取的长度
     * @param     int  $startdd  开始标记处
     * @return    string
     */
    function mb_sub($str, $length, $start=0, $encode='')
    {
        global $cfg_soft_lang;
        $encode=$cfg_soft_lang;
        if(strlen($str) < $start+1)
        {
            return '';
        }
        if(!function_exists('mb_substr') ){
            return cn_substr_utf8($str, $length, $start=0);
        }
        if($encode!='utf8'){
            $str = mb_convert_encoding($str,'utf8',$encode);
        }
        $osLen = mb_strlen($str);
        if($osLen<=$length){
            return $str;
        }
        $string = mb_substr($str,$start,$length,'utf8');
        $sLen = mb_strlen($string,'utf8');
        $bLen = strlen($string);
        $sCharCount = (3*$sLen-$bLen)/2;
        if($osLen<=$sCharCount+$length){
            $arr = preg_split('/(?<!^)(?!$)/u',mb_substr($str,$length+1,$osLen,'utf8'));
        }else {
            $arr = preg_split('/(?<!^)(?!$)/u',mb_substr($str,$length+1,$sCharCount,'utf8'));
        }
        foreach($arr as $value){
            if(ord($value)<128 && ord($value)>0){
                $sCharCount = $sCharCount-1;
            }else {
                $sCharCount = $sCharCount-2;
            }
            if($sCharCount<=0){
                break;
            }
            $string.=$value;
        }
        if(strlen($str)>strlen($string)){
            $string.='...';
        }
        return $string;
    }

    文件最后不要画蛇添足的添加文件结束符  ?>

    3、直接调用函数:

    <p class="l23">[field:description function="mb_sub(Html2Text(@me),68)"/]</p>

    完成自定义函数!

  • 相关阅读:
    tp5.1 查询自定义排序(按照查询结果顺序排序)
    Laravel Auth 用户认证
    Laravel 文件上传
    Laravel 缓存操作
    Laravel 验证码
    第46章:TEB
    第45章:TLS回调函数
    第4章:逆向分析技术--32位软件逆向技术
    第43章:内核6中的DLL注入
    第42章:内核6中的会话
  • 原文地址:https://www.cnblogs.com/picaso/p/2649689.html
Copyright © 2011-2022 走看看