我正在使用 PHP 将数据从 Excel 工作表上传到 mySQL 数据库,但我还没有找到一种完美的方法来删除我上传的内容中的不相关信息。
我在 StackOverflow 上阅读了几篇有关 PHP 中的空格检测和删除的文章,并通读了 PHP's Trim function 的官方指南。关于除文字 space
字符之外可能导致空格的各种因素,例如 tab
、new line
、carriage return
、NUL 字节
或垂直制表符
。
其中大部分可以使用 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/