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

相关推荐
淼淼爱喝水2 小时前
DVWA和Pikachu命令注入漏洞检测实验
安全·web安全·php·pikachu·dvwa
专注VB编程开发20年3 小时前
json和python元组,列表,字典对比
开发语言·python·json·php
怀旧,3 小时前
【Linux网络编程】15. Reactor 反应堆模式
linux·网络·php
Dylan的码园4 小时前
2026年免费远程控制软件哪个好?ToDesk向日葵UU远程免费版横评,不限次数不限时长
服务器·开发语言·php
dog2504 小时前
解析几何的力量(1)
服务器·开发语言·网络·php
号码认证服务5 小时前
如何让来电显示公司名代替陌生数字号码?企业号码认证开通指南
服务器·c语言·网络·经验分享·智能手机·云计算·php
一念春风5 小时前
QwenPaw(替代小龙虾)大模型
开发语言·php
是有头发的程序猿6 小时前
AI Agent自动化交易流程:1688定制交易API全链路开发实战教程(Python源码)
python·自动化·php
极梦网络无忧7 小时前
# 从零打造 Composer 依赖包:ThinkPHP 项目开发实战指南
php·composer
jerryinwuhan15 小时前
基于各城市站点流量的复合功能比较
开发语言·php