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是的,它们包括在内,除了将一个条目与另一个条目分开之外没有任何意义。然后,您可以首先在换行符处分解,循环这些内容,并将数据推送到临时数组中。一旦遇到这些边界标记,将收集的临时数据推送到最终结果数组中,清除临时数组,然后继续…