首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传和清理*.txt文件移除过多的空格

问上传和清理*.txt文件移除过多的空格
EN

Stack Overflow用户
提问于 2018-06-19 09:45:44
回答 1查看 55关注 0票数 1

当我上传一个带有php上传脚本的文本文件(*.txt)并将其发送到DB时,有许多不想要的字符,它们不会显示在屏幕上,而是显示为数据库中的�(在每个普通字符之后)。

这是我上传的文本:

代码语言:javascript
复制
File                test_02
Date                15. Juni 2018
Start of Meas.      11:09
Tester              
Probe/Test Force    Sono50/50N
Probe-SN            777
Dwell Time          0 sec
Material table      Steel   A1
Norm; HV            EN ISO 18265
Adjustment File     Unnamed
Adj. Number         0
Limits              Off
Number              4
Mean                773,0   HV
Std. Deviation      9,5 HV  1,2%
Maximum             785,0   HV
Minimum             763,8   HV
R                   21,2    HV  2,7%
Cp
Cpk

1           763,8   HV
2           785,0   HV
3           775,8   HV
4           767,1   HV

因此,我已经编写了一些代码来清理它,但我现在缺少一些关键的空间。哪里出了问题,怎么纠正呢?

代码语言:javascript
复制
$lines = file($_FILES['uploaded']['tmp_name']); //file in to an array

print_r给出

数组( =>��File test_02 1 => Date 15.Juni 2018 2 => Start of Meas。11:09 3 =>测试器4 =>探针/测试力SN 50/50N 5 =>探针-SN 777 6 =>驻留时间0秒7 =>材料表钢A1 8 => Norm;HV EN ISO 18265 9 =>调整文件未命名10 => Adj. .编号0 11 =>限制12 =>编号4 13 =>平均773,0 HV 14 => Std。偏差9,5 HV 1,2% 15 =>最大785,0 HV 16 =>最小763,8 HV 17 => R21,2 HV 2,7% 18 => Cp 19 => => 21 => 1 763,8 HV 22 => 2 785,0 HV 23 => 3 775,8 HV 24 => 4 767,1 HV 25 => )1

这是我的技巧,将所有不需要的字符更改为下划线,然后用一个空格替换所有下划线。

代码语言:javascript
复制
<?php
// convert spaces to underscore
$lines_01 = str_replace(' ', '_', $lines[01]);
$lines_02 = str_replace(' ', '_', $lines[02]);
$lines_04 = str_replace(' ', '_', $lines[04]);
$lines_05 = str_replace(' ', '_', $lines[05]);
$lines_06 = str_replace(' ', '_', $lines[06]);
$lines_07 = str_replace(' ', '_', $lines[07]);
$lines_08 = str_replace(' ', '_', $lines[08]);
$lines_14 = str_replace(' ', '_', $lines[14]);
$lines_17 = str_replace(' ', '_', $lines[17]);
$lines_21 = str_replace(' ', '_', $lines[21]);
$lines_22 = str_replace(' ', '_', $lines[22]);
$lines_23 = str_replace(' ', '_', $lines[23]);
$lines_24 = str_replace(' ', '_', $lines[24]);

// remove unwanted text and keep normal charcaters
$lines_01 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_01);
$lines_02 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_02);
$lines_04 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_04);
$lines_05 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_05);
$lines_06 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_06);
$lines_07 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_07);
$lines_08 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_08);
$lines_14 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_14);
$lines_17 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_17);
$lines_21 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_21);
$lines_22 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_22);
$lines_23 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_23);
$lines_24 = preg_replace('/[^A-Za-z0-9\,.:_]/', '', $lines_24);

// convert one or multipe underscore to spaces
$lines_01 = preg_replace('/_+/', ' ', $lines_01);
$lines_02 = preg_replace('/_+/', ' ', $lines_02);
$lines_04 = preg_replace('/_+/', ' ', $lines_04);
$lines_05 = preg_replace('/_+/', ' ', $lines_05);
$lines_06 = preg_replace('/_+/', ' ', $lines_06);
$lines_07 = preg_replace('/_+/', ' ', $lines_07);
$lines_08 = preg_replace('/_+/', ' ', $lines_08);
$lines_14 = preg_replace('/_+/', ' ', $lines_14);
$lines_17 = preg_replace('/_+/', ' ', $lines_17);
$lines_21 = preg_replace('/_+/', ' ', $lines_21);
$lines_22 = preg_replace('/_+/', ' ', $lines_22);
$lines_23 = preg_replace('/_+/', ' ', $lines_23);
$lines_24 = preg_replace('/_+/', ' ', $lines_24);

// remove unwanted text
$lines_01 = str_replace('Date ', '', $lines_01);
$lines_02 = str_replace('Start of Meas. ', '', $lines_02);
$lines_04 = str_replace('ProbeTest Force ', '', $lines_04);
$lines_05 = str_replace('ProbeSN ', '', $lines_05);
$lines_06 = str_replace('Dwell Time ', '', $lines_06);
$lines_07 = str_replace('Material table ', '', $lines_07);
$lines_08 = str_replace('Norm HV', '', $lines_08);
$lines_14 = str_replace('Std. Deviation ', '', $lines_14);
$lines_17 = str_replace('R ', '', $lines_17);
$lines_21 = str_replace('1 ', '', $lines_21);
$lines_22 = str_replace('2 ', '', $lines_22);
$lines_23 = str_replace('3 ', '', $lines_23);
$lines_24 = str_replace('4 ', '', $lines_24);
?>

左什么是发送到DB,右边是我想要的。请指点

​

EN

回答 1

Stack Overflow用户

发布于 2018-06-19 10:21:59

在没有BOM的情况下,txt文件的编码和php脚本的utf-8是吗?数据库怎么样?数据库连接呢?

如果您只打算这样做一两次,然后继续到substr()字符串,您想要插入一个字符,否则你应该摆弄字符编码。http://php.net/substr

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50925262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档