php - 确定变量中的空白实际上是什么

标签 php mysql import-from-excel

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

我在 StackOverflow 上阅读了几篇有关 PHP 中的空格检测和删除的文章,并通读了 PHP's Trim function 的官方指南。关于除文字 space 字符之外可能导致空格的各种因素,例如 tabnew linecarriage returnNUL 字节垂直制表符

其中大部分可以使用 trim() 函数删除,但我发现我上传的一些单元格中还存在一些其他字符,因此我编写了这个函数,并传递给每个上传的单元格变量通过:

function smartTrim($value) {

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

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

  return $value;

}

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

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

 Q12345  /* [space]Q12345 */

上传后,使用 PHP 的 echo 输出:

 Q12345 /* [space]Q12345 */

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

 Q12345 /*Â[space]Q12345 */

PHP 中是否有某种方法可以让我遍历字符串中的每个字符并输出它是什么 UTF 字符,这样我就可以弄清楚如何删除这个奇怪的 Â 符号以及任何后续符号Excel 可能会在我的单元格中放入一些奇怪的东西?

最佳答案

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

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 和数字,那么这将起作用。

关于php - 确定变量中的空白实际上是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32405622/

相关文章:

mysql - 如何将以下循环转换为 SQL 语句以在 MySQL 数据库上运行

java - 如何使用 POI Streaming (SAX XML) 从 Excel 中将日期提取为日期而不是文本

sql-server - 将水平数据转换为垂直数据

python - 使用 xlrd 打开 Excel 文件时出现编码错误

php - 如何使搜索查询词加粗

javascript - 从 javascript 运行 PHP 插入函数

javascript - 在同一页面的 div 中显示 ajax 调用结果

php - 在 Blade 模板上显示变量

php - 如何通过连接从两个表中获取数据

mysql - 我应该使用什么作为主机名从另一台计算机连接到 mysql 服务器?