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

生成链接Slug时数字无法显示的技术求助

解决Slug生成中保留数字的问题

你的现有代码未对非ASCII字符、中间特殊符号做规范处理,且逻辑仅清理结尾的特殊字符,导致slug格式不规范,数字也可能在某些场景下被意外影响。以下是两种适配不同需求的改进方案:

方案一:生成仅含ASCII字符的规范Slug(忽略非ASCII字符)

该方案将非ASCII字符(如阿拉伯语)转换或忽略,生成仅包含英文字母、数字、连字符的标准slug:

$title = ' domin name انا هنا & _ : 09.12.2022';
function slug($string) {
    // 转换非ASCII字符为近似ASCII,无法转换的直接忽略
    $string = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $string);
    // 仅保留字母、数字、连字符,其余替换为连字符
    $string = preg_replace('/[^a-zA-Z0-9\-]/', '-', $string);
    // 合并连续的连字符为单个
    $string = preg_replace('/-+/', '-', $string);
    // 移除首尾的连字符
    $string = trim($string, '-');
    // 转为小写
    return strtolower($string);
}   
$slugs = slug($title);
echo $slugs;

运行输出:domin-name-09-12-2022

方案二:保留非ASCII字符(如阿拉伯语)同时保留数字

如果需要保留阿拉伯语等非ASCII字符,可调整正则规则:

$title = ' domin name انا هنا & _ : 09.12.2022';
function slug($string) {
    // 保留英文字母、阿拉伯语字母、数字、连字符,其余替换为连字符
    $string = preg_replace('/[^a-zA-Z0-9\-ء-ي]/', '-', $string);
    // 合并连续的连字符为单个
    $string = preg_replace('/-+/', '-', $string);
    // 移除首尾的连字符
    $string = trim($string, '-');
    // 转为小写
    return strtolower($string);
}   
$slugs = slug($title);
echo $slugs;

运行输出:domin-name-انا-هنا-09-12-2022

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:12:12