字符串中不可打印的字符 - php

时间:2015-10-30 19:06:31

标签: php character-encoding

我正在调试Drupal模块(此模块,webform_import,将CSV数据导入数据库)并获取一些不可打印的字符,从而导致模块出错。这是我的调试代码

if($v == 'semester'){
    dpm('found ' . $v);
}
else
{
    dpm('not found ' . $v);
    dpm(str_split($v));
}
dpm($v);

变量$ v通过以下函数

传递
function _webform_import_csvfieldtrim($value) {
  $value = trim($value);
  // Strip off the beginning and ending quotes if necessary.
  $value = preg_replace('/^".*"$/', '', $value);
  // Remove control characters. Some editors add invalid EOL chars.
  // fgetcsv does not handle unicode characters therefore we replace them
  // manually. See http://bugs.php.net/bug.php?id=31632.
  $value = str_replace('\x00..\x1F\xfe\xff', '', $value);
  //$value = str_replace('/[\x00-\x1F\x80-\xFF]/', '', $value);

  return $value;
}

这是我的调试输出 output of debugging code

根据输出,$ v打印'学期'但不等于字符串' semester'转换为数组时有11个字符而不是8个。如果_webform_import_csvfieldtrim函数出现问题,请告诉我。此外,我已将CSV文件的编码转换为UTF-8。

谢谢。

1 个答案:

答案 0 :(得分:0)

前3个不可见的字符是BOM。我将编码更改为' UTF-8而没有BOM'并且该模块有效。