Fastadmin中实现获取名称首字母

在Fastadmin中实现获取名称首字母

目录

安装依赖包

添加公共函数

测试

总结


安装依赖包

命令如下:

bash 复制代码
composer require overtrue/pinyin

安装完成

添加公共函数

在框架common.php文件中添加获取首字母公共函数,

这样可以在项目的需要的地方调用。代码如下:

php 复制代码
/**
 * 根据输入名称(中文/字母)获取首字母,无法识别返回#
 * @param string $name 输入名称(支持中文、字母、混合字符)
 * @return string 首字母(大写)或#
 */
function getFirstLetter(string $name): string
{
    // 初始化拼音转换实例
    $pinyin = new Overtrue\Pinyin\Pinyin();

    // 过滤非中文、非字母的字符(保留中文和字母)
    // 匹配规则:[\x{4e00}-\x{9fa5}] = 中文,[a-zA-Z] = 字母,u修饰符支持中文匹配
    $cleanName = preg_replace('/[^\x{4e00}-\x{9fa5}a-zA-Z]/u', '', $name);

    // 过滤后为空,直接返回#
    if (empty($cleanName)) {
        return '#';
    }

    // 优先提取字母首字母
    preg_match('/[a-zA-Z]/', $cleanName, $letterMatches);
    if (!empty($letterMatches)) {
        // 提取第一个字母并转为大写
        return strtoupper($letterMatches[0]);
    }

    // 无字母,处理中文转首字母逻辑
    try {
        // 转换为中文拼音首字母数组
        $firstLetters = $pinyin->abbr($cleanName);
        $firstLetter = !empty($firstLetters) ? strtoupper($firstLetters[0]) : '#';

        // 校验是否为有效字母,无效则返回#
        return preg_match('/^[A-Z]$/', $firstLetter) ? $firstLetter : '#';
    } catch (\Exception $e) {
        // 转换异常返回#
        return '#';
    }
}

测试

php 复制代码
var_dump(getFirstLetter("张三"));        // 输出 string(1) "Z"
var_dump(getFirstLetter("李四123"));     // 输出 string(1) "L"
var_dump(getFirstLetter("abc测试"));     // 输出 string(1) "A"(优先字母)
var_dump(getFirstLetter("123456"));      // 输出 string(1) "#"
var_dump(getFirstLetter(""));            // 输出 string(1) "#"
var_dump(getFirstLetter("😀h哈哈"));     // 输出 string(1) "H"(优先字母)

总结

使用composer安装的依赖库,实现项目的一个小功能,简单记录一下

相关推荐
damoluomu1 天前
挑 PHP CMS 之前,先学会看它的协议
php
子非鱼a1 天前
【WEB】Online ToolWEB
php
PHP实战开发录1 天前
Nginx上传大文件为什么报413
nginx·php·开发
damoluomu2 天前
国产企业级 PHP CMS:哪些能免费商用
php
郑州光合科技余经理2 天前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
MyFreeIT2 天前
Android PHP Manual
php
aixingpan2 天前
aixingpan.cn API开发文档:api_docs_trichart_natal_progression_sec_transit2接口指南
前端·php
sbjdhjd2 天前
从日志包含到临时文件竞争:文件包含进阶复盘中的 Docker、Windows 与 Session 限制
网络·安全·web安全·网络安全·数据挖掘·php·rce
daxiangxm2 天前
【趣味休息】“围住小猫在线玩”-“困住小猫”,又回来了
数据结构·人工智能·vscode·github·php
星光开发者2 天前
基于Spring Boot的充电桩管理系统的设计与实现-计算机毕设【课程设计】57105
vue.js·spring boot·vscode·mysql·django·php·express