mb_substr和substr之间的区别

Poo*_*att 17 php string multibyte

如果我使用substr()而不是mb_substr()功能,它会对我的结果产生任何影响吗?

由于我的服务器不支持mb_函数,我必须将其替换为 substr()

Saa*_*lal 45

如果您有 utf-8 编码,请使用 mb_substr

例子 :

echo substr("hi mémé", 0 , 5); // will print hi m?
echo mb_substr("hi mémé", 0 , 5); // will print hi mé
Run Code Online (Sandbox Code Playgroud)

  • 这实际上确实回答了这个问题,而接受的答案却没有。 (7认同)
  • 这应该被接受的答案。 (2认同)

小智 12

如果您使用从子串中的多字节文本,它将影响您的脚本.如果是这种情况,我强烈建议您在php.ini中启用mb_*函数或执行此操作ini_set("mbstring.func_overload", 2);

  • http://php.net/manual/en/mbstring.configuration.php#ini.mbstring.func-overload > 此设置只能从 php.ini 文件中更改。 (2认同)

Law*_*one 5

string substr(string $ string,int $ start [,int $ length])

返回start和length参数指定的字符串部分.

mb_substr(字符串$ STR,诠释$启动[摘要$长度[,字符串$编码]])

根据字符数执行多字节安全substr()操作.位置从str的开头计算.第一个字符的位置为0.第二个字符的位置为1,依此类推.