基于fastadmin字符串处理类

为了更加方便快捷的对字符串进行有效处理,这里特意整理了一批字符串常用函数,将其集成到一个通用traits

在控制器使用时只需要引用这个trait类即可直接使用,不需要额外再去引用其他类文件, 编写这个类的初衷是希望在html模版文件当中可以直接从后端给出一个动态滚动效果的数字,然后干脆把其他常用字符串处理函数也囊括在一起,今后使用的时候就不需要单独再去查找对应的类包进行引用

这里对拼音、随机字符串、版本号和滚动数字进行了处理

<?php
namespace app\common\traits;

use fast\Pinyin;
use fast\Random;
use fast\Version;

trait strings
{
    /**
     * 字符串占位符
     * @param String $str 初始化字符串
     * @param array $var 变量数组
     * @return string
     */
    public function sprintf(String $str,Array $var) {
        $str = vsprintf($str, $var);
        return $str;
    }

    /**
     * 生成拼音
     * @param String $str 中文汉字
     * @param bool $onlyfirst  是否只返回拼音首字母
     * @param String $delimiter 分隔符
     * @param bool $ucfirst 是否首字母大写
     * @return string
     */
    public function pinyin(String $str,bool $onlyfirst,String $delimiter="",bool $ucfirst) {
        $pinyin = Pinyin::get($str, $onlyfirst, $delimiter, $ucfirst);
        return $pinyin;
    }

    /**
     * 生成数字和字母
     * @param int $len
     * @return string
     */
    public function alnum(int $len=6) {
        return Random::alnum($len);
    }

    /**
     * 仅生成字符串
     * @param int $len
     * @return string
     */
    public function alpha(int $len=6) {
        return Random::alpha($len);
    }

    /**
     * 生成指定长度的随机数字
     * @param int $len
     * @return string
     */
    public function numeric(int $len =4) {
        return Random::numeric($len);
    }

    /**
     * 生成指定长度的无0的随机数字
     * @param int $len
     * @return string
     */
    public function nozero(int $len=4) {
        return Random::nozero($len);
    }

    public function random_float(int $st_num, int $end_num, int $mul=1000000) {
        if($st_num > $end_num) return false;
        return mt_rand($st_num * $mul, $end_num * $mul) / $mul;
    }

    /**
     * 根据数组元素的概率获得键名
     * @param array $ps
     * @param int $num
     * @param bool $unique
     * @return mixed 当num为1时返回键名,反之返回一维数组
     */
    public function lottery(Array $ps,int $num=1,bool $unique=true) {
        return Random::lottery($ps, $num, $unique);
    }

    /**
     * 获取全球唯一标识
     * @return string
     */
    public function uuid() {
        return Random::uuid();
    }

    /**
     * 检测版本是否的版本要求的数据中
     *
     * @param string $version
     * @param array  $data
     * @return bool
     */
    public function check(String $version,Array $data = []) {
        return Version::check($version, $data);
    }

    /**
     * 比较两个版本号
     *
     * @param string $v1
     * @param string $v2
     * @return boolean
     */
    public function compare($v1, $v2){
        return Version::compare($v1, $v2);
    }

    /**
     * 动态滚动数字
     * @param float $num
     * @param $decimals
     * @param bool $ThousandSep
     * @param string $color
     * @param string $size
     * @return string
     */
    public function animationframe(float $num,$decimals, bool $ThousandSep= true,int $sec=300, String $color = "#1d9b24",String $size="12px") {
        $uuid = $this->alpha(1).$this->uuid();
        $var = $this->alpha(6);
        return <<<EOF
            <style type="text/css">
                #{$uuid} {
                    color: $color;
                    font-size: $size;
                }
            </style>
            <script type="text/javascript">
                   var $var = $num;
                   var amountFrame = 0;
                   var frameNum = $sec;
               var animation = window.requestAnimationFrame(function f() {
                   var text = parseFloat($("#{$uuid}").text(), $decimals);
                   if(amountFrame < $var) {
                       amountFrame = amountFrame + $var / frameNum; 
                       animation = window.requestAnimationFrame(f);
                   }else{
                       amountFrame = $var;
                       window.cancelAnimationFrame(f);
                   }
                   $("#{$uuid}").text($ThousandSep ? amountFrame.toFixed($decimals).toLocaleString() : amountFrame.toFixed($decimals));
               });
            </script>
            <span id='{$uuid}'></span>
EOF;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追寻自由的路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值