Php 如何在没有任何分隔符或分隔符的情况下从文本文件导入数据?
我必须使用php代码将数据从文本文件导入mysql,是的,这听起来很简单,我以前也做过类似的工作,比如从csv文件、excel文件或任何用分隔符分隔数据的文本文件导入数据。但在我目前的例子中,没有任何分隔符,只有两个空格和字段的固定长度。比如说-Php 如何在没有任何分隔符或分隔符的情况下从文本文件导入数据?,php,mysql,text,import,Php,Mysql,Text,Import,我必须使用php代码将数据从文本文件导入mysql,是的,这听起来很简单,我以前也做过类似的工作,比如从csv文件、excel文件或任何用分隔符分隔数据的文本文件导入数据。但在我目前的例子中,没有任何分隔符,只有两个空格和字段的固定长度。比如说- table field |------|-----------|-----------|-------------| | id(8)| name(50) | state(15) | category(10)| |------|-----------
table field
|------|-----------|-----------|-------------|
| id(8)| name(50) | state(15) | category(10)|
|------|-----------|-----------|-------------|
| | | | |
upload.txt文件的示例数据-
::格式:
ID名称地址类别
10719922印度联合银行德里普通银行
10719956印度国家银行孟买普通银行
10719522 HDFC银行古吉拉特高中
10759924 ICICI银行果阿正常
现在您可以理解文本文件的数据格式,即字段长度+两个空格、字段长度+两个空格等等。问题是,如果数据与字段大小不匹配,则再次共享空格以完成字段长度,这就是为什么两个空格不能用作分隔符的原因。例如,取第一个数据-id有8位数据,比两个空格和名称长度50长,但数据只有19个字符,因此在这两个空格之后有31个空格来完成长度50,然后是下一个字段。因此,我没有分隔符或语法(而不是长度+2空格)来标识单个字段数据。我很困惑如何使用php脚本将这些数据导入MySQL。有人认为这会发生吗。请我需要一些想法或php代码,以处理这种情况。谢谢您可以使用函数,将字符串/行/行分解为=2个空格
:
$line='10719922印度联合银行德里普通';
$m=preg_split(“~(\h{2,})~”,$line);
印刷费(百万美元);
不应该比这更难:
<?php
$input = <<<END
10719922 Union Bank of India delhi normal
10719956 State Bank of India mumbai normal
10719522 HDFC Bank gujrat high
10759924 ICICI Bank goa normal
END;
$def = array(
"id" => 8,
"name" => 50,
"state" => 15,
"category" => 10
);
foreach (explode(PHP_EOL, $input) as $line) {
foreach ($def as $field => $length) {
$value = substr($line, 0, $length + 2);
$line = substr($line, $length + 2);
print $field.' = '.trim($value).PHP_EOL;
}
print '----------------------------------------'.PHP_EOL;
}
?>
谢谢Robby,这是一个很棒的解决方案。我在你的代码的帮助下完成了这项工作。