CakePHP slug 将我的 Bangla 文本转换为英语

CakePHP slug converting my Bangla text to English

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

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

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

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

ami-tomaya-bhalobasi

将transliteratorId设为false后

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

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

我的预期结果是

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

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

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"