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安装的依赖库,实现项目的一个小功能,简单记录一下

相关推荐
weixin_4080996727 分钟前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能
王莎莎-MinerU4 小时前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php
AC赳赳老秦5 小时前
OpenClaw 采集任务日志审计:全程记录采集行为,满足合规溯源与企业审计要求
java·大数据·python·数据挖掘·数据分析·php·openclaw
跨境技工小黎6 小时前
海外抢票:2026icketmaster注册、抢票及退票攻略
php
Helen_cai9 小时前
OpenHarmony 通用状态加载、空页面、错误兜底组件封装(全局业务通用 UI 组件 API23)
开发语言·ui·华为·php·harmonyos
REDcker9 小时前
基于 eBPF 的网络可观测:协议栈路径与 sk_buff
linux·服务器·网络·php·ebpf·bpf
weixin_BYSJ19871 天前
django在线图书销售平台---附源码16192
java·javascript·spring boot·python·django·flask·php
__log2 天前
弱网环境下的“生命线“:从AI流式响应到大文件上传的稳定性
开发语言·人工智能·php
TlSfoward2 天前
TLSFOWARD TLS指纹
开发语言·数据库·爬虫·搜索引擎·https·php
信仰8742 天前
Linux进阶篇01:网络基础配置
linux·网络·php