【问题标题】:CakePHP slug converting my Bangla text to EnglishCakePHP slug 将我的孟加拉语文本转换为英语
【发布时间】:2021-09-30 08:02:06
【问题描述】:

我正在尝试在 slug 中转换后保存类别名称

所以在实体中我使用 setter 将我的文本转换为 slug 文本

protected function _setName($name)
{
    return Text::slug($name);
}

在输入名称"আমি তোমায় ভালোবাসি"发送帖子请求后 已进入数据库

ami-tomaya-bhalobasi

将 transliteratorId 设为 false 后

return Text::slug($name,[
   'transliteratorId' => false
]);

我得到了输出:আম-ত-ম-য-ভ-ল-ব-স

我的预期结果是

আমি-তোমায়-ভালোবাসি

我怎样才能得到我想要的结果?

【问题讨论】:

    标签: cakephp cakephp-4.x


    【解决方案1】:

    slugs 的全部意义在于获得一个“安全”的纯 US-ASCII 字符串。如果您似乎只想删除空格,则可以使用简单的正则表达式:

    preg_replace('/\s/u', '-', 'আমি তোমায় ভালোবাসি')
    

    但是,我建议您首先仔细检查您认为这是必要的原因。正确编码的 URL 无论如何都会将空格显示为 %20,这在拉丁脚本文本中是“丑陋的”,但在其他脚本中会被忽视:

    var_dump(rawurlencode('আমি তোমায় ভালোবাসি'));
    
    string(159) "%E0%A6%86%E0%A6%AE%E0%A6%BF%20%E0%A6%A4%E0%A7%8B%E0%A6%AE%E0%A6%BE%E0%A6%AF%E0%A6%BC%20%E0%A6%AD%E0%A6%BE%E0%A6%B2%E0%A7%8B%E0%A6%AC%E0%A6%BE%E0%A6%B8%E0%A6%BF"
    

    【讨论】:

    • 对于一些日文文本示例“a3!(エースリー)”,preg_replace 没有替换,你知道吗?
    • 该文本根本没有任何空格:apps.timwhitlock.info/unicode/…
    猜你喜欢
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 2021-11-15
    • 2020-02-15
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多