CakePHP使用Text::slug转换孟加拉语文本为slug无法得到预期结果如何解决
你遇到的问题是CakePHP的Text::slug()默认正则规则仅保留ASCII字符,禁用转写(transliteratorId=false)后,孟加拉语的元音变音符号会被当作无效字符过滤,导致输出残缺。
解决方案
修改Text::slug()的调用参数,新增自定义正则规则,将孟加拉语字符加入保留范围,示例代码如下:
protected function _setName($name) { return Text::slug($name, [ 'transliteratorId' => false, // 正则保留孟加拉语字符、数字、空白字符,u修饰符开启Unicode匹配 'regex' => '/[^\p{Bengali}\p{N}\s]/u' ]); }
上述配置会先删除所有非孟加拉语、非数字、非空白的字符,再自动将空白替换为连接符-,最终输出你预期的আমি-তোমায়-ভালোবাসি结果。
内容的提问来源于stack exchange,提问作者Niloy Rony
相关产品推荐
相关产品推荐

