You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP开发域名连续重复字符的缩写函数需求

符合新规则的PHP域名模式缩写函数实现

嘿,这就给你搞定这个PHP域名缩写函数,完全适配你调整后的规则!先明确下需求:

调整后的规则:当字母或数字连续重复5次及以上时,将其缩写为「字符+重复次数」的形式,比如8个连续L缩写为L8,混合序列LLLLLLLNNNNNN(7个L+6个N)会被缩写为L7N6。

实现思路

  • 用正则精准匹配连续出现≥5次的字母/数字片段
  • 借助preg_replace_callback对每个匹配片段做动态替换,生成「字符+次数」的缩写格式

完整代码

function abbreviateDomainPattern($pattern) {
    // 正则匹配连续5次及以上的字母/数字
    return preg_replace_callback('/([a-zA-Z0-9])\1{4,}/', function($matches) {
        // 提取重复字符,计算总重复次数后拼接格式
        return $matches[1] . strlen($matches[0]);
    }, $pattern);
}

// 测试用例,验证效果
echo abbreviateDomainPattern('LLLLLLL') . PHP_EOL;       // 输出:L7
echo abbreviateDomainPattern('NNNNNN') . PHP_EOL;        // 输出:N6
echo abbreviateDomainPattern('LLLLLLLNNNNNN') . PHP_EOL;// 输出:L7N6
echo abbreviateDomainPattern('AAAAA') . PHP_EOL;         // 输出:A5(5次刚好触发缩写)
echo abbreviateDomainPattern('AAABBB') . PHP_EOL;        // 输出:AAABBB(不足5次,不处理)
echo abbreviateDomainPattern('test11111abc') . PHP_EOL;  // 输出:test15abc

代码说明

  • 正则表达式/([a-zA-Z0-9])\1{4,}/:
    • ([a-zA-Z0-9]):捕获单个字母或数字作为分组,后续用来取重复的字符
    • \1{4,}:表示该捕获的字符连续出现4次及以上,加上前面的1次,总次数就是5次及以上,刚好符合新规则
  • preg_replace_callback会自动遍历所有匹配到的片段,回调函数里通过strlen($matches[0])获取当前匹配片段的总长度,再和捕获的字符拼接成缩写格式

扩展提示

如果需要支持更多字符(比如下划线_),只需要修改正则里的字符范围即可,比如改成:

'/([a-zA-Z0-9_])\1{4,}/'

内容的提问来源于stack exchange,提问作者AnnaLA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:42:06