Php 如何在没有任何分隔符或分隔符的情况下从文本文件导入数据?

Php 如何在没有任何分隔符或分隔符的情况下从文本文件导入数据?,php,mysql,text,import,Php,Mysql,Text,Import,我必须使用php代码将数据从文本文件导入mysql,是的,这听起来很简单,我以前也做过类似的工作,比如从csv文件、excel文件或任何用分隔符分隔数据的文本文件导入数据。但在我目前的例子中,没有任何分隔符,只有两个空格和字段的固定长度。比如说- table field |------|-----------|-----------|-------------| | id(8)| name(50) | state(15) | category(10)| |------|-----------

我必须使用php代码将数据从文本文件导入mysql,是的,这听起来很简单,我以前也做过类似的工作,比如从csv文件、excel文件或任何用分隔符分隔数据的文本文件导入数据。但在我目前的例子中,没有任何分隔符,只有两个空格和字段的固定长度。比如说-

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,这是一个很棒的解决方案。我在你的代码的帮助下完成了这项工作。