为什么PHP将托架返回/换行组合作为单个字节处理?

jri*_*ggs 7 php

我有一个PHP脚本,截断41字节的字符串.我在字符串上调用strlen来检查它的大小.但是,如果字符串具有"\ r \n"组合,则此组合将被视为一个字节.所以在我的情况下,而不是42字节,PHP认为它是41字节.

substr也将它截断为42而不是41个字节.

  if (strlen($value) > 41)
  {
   $value = substr($value, 0, 41);
Run Code Online (Sandbox Code Playgroud)

另一种奇怪的情况.我有一大堆数据通过这个函数.成千上万的字符串.如果我使用更简单的测试数据集,那么代码可以正常工作,将"\ r \n"视为2个字节.

有任何想法吗?谢谢.

Ron*_*ero 1

将组合 \r\n 转换为 \n ,执行您需要的任何操作,然后将所有 \n 恢复为组合...

str_replace("\r\n","\n",$value);
if (strlen($value) > 41)
  {
   $value = substr($value, 0, 41);
str_replace("\n","\r\n",$value);
Run Code Online (Sandbox Code Playgroud)

希望这对你有用但不知道你想做什么