Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于特定单词从长字符串数据中提取_Php - Fatal编程技术网

Php 基于特定单词从长字符串数据中提取

Php 基于特定单词从长字符串数据中提取,php,Php,我正在尝试向粘贴文本的数据库中进行批量导入 基本上,数据如下所示: ******* First Name: First Last Name: Last Age:23 Browser:IE ******* ====== First Name- First Last Name- Last Age-23 Browser Type- IE ======== 如您所见,分隔符字符(条目和标题“-”和“:”+“==”和“****”)将与标题不同(第一个是浏览器,第二个是浏览器类型) 可以有数百行这样的随

我正在尝试向粘贴文本的数据库中进行批量导入

基本上,数据如下所示:

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

======
First Name- First
Last Name- Last
Age-23
Browser Type- IE
========
如您所见,分隔符字符(条目和标题“-”和“:”+“==”和“****”)将与标题不同(第一个是浏览器,第二个是浏览器类型)

可以有数百行这样的随机格式。 我试图实现的是,让数据通过分隔符(或者-或者:),并指定第一行等于名字,第二行等于姓氏,等等。我试图解释的是,这些行和顺序总是相同的

最初我想用
explode(“\n”,$importData)来实现这一点
你知道我该怎么做吗


谢谢大家!

我正在分析每一行的数据,并检查是否有
-
作为分隔符

<?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);
}

为什么数据采用这种格式?是否包括
******
=======
和空行?如果是的话,星星或等号之间的差异有什么意义吗?这不是我要问的问题。这是一些人手工编写的数据,但它们的行始终保持相同的格式。@C是的,它们包括在内,除了将一个条目与另一个条目分开之外没有任何意义。然后,您可以首先在换行符处分解,循环这些内容,并将数据推送到临时数组中。一旦遇到这些边界标记,将收集的临时数据推送到最终结果数组中,清除临时数组,然后继续…