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

时间:2011-01-05 16:09:48

标签: php

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

此外,substr将其截断为42而不是41个字节。

  if (strlen($value) > 41)
  {
   $value = substr($value, 0, 41);

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

有什么想法吗? 感谢。

1 个答案:

答案 0 :(得分: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);

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