php,strtolower和mb_strtolower有什么区别?

12 php string email

在PHP中,strtolower和之间有什么区别mb_strtolower

如果我想转换提交的电子邮件地址,要转换为小写,我应该使用哪一个?有没有这样的电子邮件:Name@Domain-Test.com

如果有这样的电子邮件,我是否仍应将提交的电子邮件地址转换为小写?

Sup*_*t M 11

用strtolower(); 不适合波兰人的角色

<?php strtolower("m?kA"); ?>
Run Code Online (Sandbox Code Playgroud)

将返回:mĄka;

最好的解决方案 - 使用mb_strtolower()

<?php mb_strtolower("m?kA",'UTF-8'); ?> 
Run Code Online (Sandbox Code Playgroud)

将返回:mąka

请参阅PHP手册中的strtolower()mb_strtolower()


gna*_*arf 6

mb_ 函数也适用于多字节(unicode) 字符串。电子邮件地址不应区分大小写 - 没有太多理由将其转换为小写字母。

  • 据 about.com 称,就 RFC 2821 而言,“本地地址”*区分大小写(MTA 在实践中是否以这种方式对待它完全是另一个问题),而域则不区分大小写。请参阅:http://email.about.com/od/emailbehindthescenes/f/email_case_sens.htm 因此,最佳做法是在您计划使用的任何地址上保持大小写不变。不过,转换为小写字母以进行比较/评估唯一性可能是有意义的。 (3认同)

nic*_*ckf 6

什么是strtolower和mb_strtolower之间的不同?

mb_*函数使用多字节字符串.手册说:

与strtolower()相反,'alphabetic'由Unicode字符属性决定.因此,此函数的行为不受区域设置的影响,并且它可以转换任何具有"字母"属性的字符,例如A-umlaut(Ä).

-

有没有这样的电子邮件:Name@Domain-Test.com

是的,我想可能有这样的电子邮件地址.我发现一般来说,电子邮件地址不区分大小写,所以我不打算改变他们的情况.