确定变量实际上是什么空格

时间:2015-09-04 19:53:33

标签: php mysql import-from-excel

我正在使用PHP将数据从Excel工作表上传到mySQL数据库,我还没有找到一种完美的方法来从我上传的内容中删除不相关的信息。

我在StackOverflow上阅读了几篇关于PHP中空格检测和删除的帖子,并在PHP's Trim function上的官方指南中阅读了关于可能导致空格的各种事情而不是文字{{1} }}字符,例如spacetabnew linecarriage returnNUL-byte

大多数这些都可以使用vertical tab函数删除,但我发现我的一些上传单元格中还有一些其他字符,所以我编写了这个函数,我将每个上传的变量通过:

trim()

虽然到目前为止这已经有效了,我有一个正在上传的值仍然其中有一些我找不到的空白区域,而且我没有知道如何确定它是什么。

在Excel中,它看起来像这样:

function smartTrim($value) {

  if ($value == null) {
    return null;
  }

  $value = trim($value);
  $value = trim($value,chr(0xC2).chr(0xA0));

  return $value;

}

上传后,使用PHP的 Q12345 /* [space]Q12345 */ 输出:

echo

在mySQL中,它看起来像这样:

 Q12345 /* [space]Q12345 */

在PHP中是否有某种方法我可以在字符串中查看每个字符并输出它的UTF字符,这样我就可以弄清楚如何去掉这个奇怪的 Q12345 /*Â[space]Q12345 */ 符号,以及随后的任何奇怪的事情Excel可能会放入我的单元格?

1 个答案:

答案 0 :(得分:2)

我不知道如何检查所有空格以查看它是否属于某个角色,但您可以从不同的角度尝试:

function clean($string) {

   return preg_replace('/[^A-Za-z0-9]/', '', $string); 
}

这只会删除上面正则表达式中没有的任何内容:

A-Z a single character in the range between A and Z (case sensitive)
a-z a single character in the range between a and z (case sensitive)
0-9 a single character in the range between 0 and 9

这可能会也可能不会满足您的需求,但如果您想要的唯一值是A-Z和数字,这将有效。