PHP函数substr()错误

Sto*_*dis 24 php substr

当我使用时,substr()我最后得到一个奇怪的角色

$articleText = substr($articleText,0,500);
Run Code Online (Sandbox Code Playgroud)

我有500个字符的输出和 < -

我怎样才能解决这个问题?这是编码问题吗?我的语言是希腊语.

Pas*_*TIN 57

substr 是使用字节计数,而不是字符.

希腊语可能意味着你正在使用一些多字节编码,如UTF-8 - 并且每个字节的计数对那些不太好.

也许使用mb_substr可以帮助,这里:mb_*功能是专门为多字节编码创建的.

  • 每天学习越来越多...谢谢stackoverflow! (4认同)

小智 19

mb_substr相反,它是能够处理多种编码,不仅是单字节的字符串为substr:

$articleText = mb_substr($articleText,0,500,'UTF-8');
Run Code Online (Sandbox Code Playgroud)

  • "UTF-8"部分对我来说很重要 - 不要忘记偷看它! (2认同)
  • 另一种方法是在任何`mb_*`命令之前使用`mb_internal_encoding('utf-8')`. (2认同)

dec*_*eze 6

看起来你正在将一个unicode角色切成两半.使用mb_substr而不是为Unicode的安全字符串的切片.