php,strtolower和mb_strtolower有什么区别?

时间:2009-05-15 02:45:33

标签: php string email

在PHP中,strtolowermb_strtolower之间有什么区别?

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

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

4 个答案:

答案 0 :(得分:10)

用strtolower();对波兰人不起作用

<?php strtolower("mĄkA"); ?>
  

将返回:mĄka;

最佳解决方案 - 使用mb_strtolower()

<?php mb_strtolower("mĄkA",'UTF-8'); ?> 
  

将返回:mąka

strtolower()&amp; PHP手册中的mb_strtolower()

答案 1 :(得分:5)

  

strtolower和mb_strtolower之间的区别是什么?

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

  

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

-

  

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

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

答案 2 :(得分:4)

mb_函数也适用于Multi-Byte(unicode)字符串。电子邮件地址不应区分大小写 - 没有太多理由将它们转换为较低的。

答案 3 :(得分:0)

如果您在Unicode字符串上使用此函数而没有告诉PHP它是Unicode,那么您将破坏字符串。特别是,在2字节UTF-8字符中常见的带有波浪号的大写字母“ A”将转换为带有波浪号的小写字母“ a”。

from scipy.optimize import fmin_l_bfgs_b import numpy as np def obj_fun(x): fx = 2*x**2 + 2*x + 1 grad = np.array([4*x + 2]) return fx, grad fmin_l_bfgs_b(obj_fun, x0=[12]) 非常慢,如果您有数据库连接,则可能需要使用它来将字符串转换为小写。甚至mb_strtolower()和其他编码也是可能的。