在MongoDb中修剪、小写、大写单词并保存


Trim, lower case, upper case words and save in MongoDb

我试图将用户提供的字符串保存到MongoDb中,但在保存以规范化之前执行此操作:

ucwords(mb_strtolower(trim($name)))

但这使得MongoDb抛出了一个带有"æøå"等字符的MongoException。

我认为"mb_"使该函数能够在UTF-8中正常工作?使用普通strtolower可以解决问题。

感谢

如果使用的是PHP 5.4,则默认字符集已从ISO-8859-1更改为UTF-8。

strtolower应该为您做得很好,除非您的$name编码不是ISO-8859-1或UTF-8

MongoDB总是需要UTF-8字符串。

正如@JvdBerg所说,这取决于你的PHP,但PHP 5.4之前的默认值不是UTF-8,所以你需要使用iconvutf8_encode来"编码"字符串。很可能您使用的是旧的PHP,而字符串实际上是ISO编码的。

mb_函数在进行转换时只考虑多字节字符,而不对字符串进行编码。