根据某些单词从长字符串数据中提取

时间:2020-02-21 12:19:51

标签: php

我正在尝试将大量内容粘贴到粘贴文本的数据库中。

基本上,数据如下:

*******
First Name: First
Last Name: Last
Age:23
Browser:IE
*******

======
First Name- First
Last Name- Last
Age-23
Browser Type- IE
========

如您所见,分隔符(条目和标题“-”和“:” +“ ====”和“ ****”)将与标题不同(我们在第1个浏览器中和浏览器类型输入第二)。

可以有数百行这样的随机格式。 我要实现的目标几乎就是获取分隔符(-或::)之后的数据,并指定第一行等于名字,第二行等于姓氏,等等。这些行和顺序将我一直在解释,总是一样。

本来我是想用explode("\n", $importData);来做到这一点的,但是我相信多维数组更适合这样做,以便将数据插入数据库。

关于我该如何处理的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:1)

我正在解析每行的数据,并检查您是否使用-:作为分隔符

<?php
$data ="*******
First Name: First1
Last Name: Last1
Age:22
Browser:IE1
*******

======
First Name- First2
Last Name- Last2
Age-23
Browser Type- IE2
========";

$new_arr1 = array();
$new_arr2 = array();

foreach(preg_split("/((\r?\n)|(\r\n?))/", $data) as $line){
    if (strpos($line, ':') !== false) {
        $new_data = explode(":", $line);
        if(isset($new_data[1])){
            $new_arr1[] = $new_data[1];
        }
    }
    if (strpos($line, '-') !== false) {
        $new_data = explode("-", $line);
        if(isset($new_data[1])){
            $new_arr2[] = $new_data[1];
        }
    }
} 

if(isset($new_arr1)){
    var_dump($new_arr1);
}

if(isset($new_arr2)){
    var_dump($new_arr2);
}

演示:http://sandbox.onlinephpfunctions.com/code/c93c3e26c739f0574e92a4159530781786182d04