-2

如何解析mysql表中的列, <14-abc>;<8-def>; 如:

abc =14
def = 8

abc 存储值 14 和 def 存储值 8 并具有多个条目。

因此需要存储类似的数组或列表,以便以后能够访问和处理解析的数据。

4

2 回答 2

1

我不知道有任何解析器支持这种语法,因此您可以为如此琐碎的事情编写自己的解析器。这是一个示例,未经测试:

$row = ' <14-abc>;<8-def>; ';

$output = Array();
$entries = explode(';', $row);              //Split the row by every ';' delimiter
foreach ($entries as $item) {               //For each entries
    if (!empty($item)) {                    //Make sure the item isn't empty (last entry might be)
        $item = str_replace(' ','',$item);  //Remove useless char
        $item = str_replace('<','',$item);  //Remove useless char
        $item = str_replace('>','',$item);  //Remove useless char
        $params = explode('-', $item);      //Again, subsplit the key and the value from the item
        $output[$params[1]] = $params[0];   //Push them into an array
    }
}

然后你可以像这样使用你很棒的数组:

foreach ($output as $key=>$value) {
    echo $key.'='.$value;
}

输入是一个$row字符串,输出是一个$output数组。你甚至可以将它包装成一个函数;)

于 2012-07-16T21:57:01.360 回答
-1
?php

function parser($row)
{
$output = Array();

$entries = explode(';', $row);       //Split the row by every ';' delimiter
foreach ($entries as $item) {                   //For each entries
    if (!empty($item)) {                        //Make sure the item isn't empty (last entry might be)
        $item = str_replace(' ','',$item);      //Remove extra char
        $item = str_replace('<','',$item);      //Remove extra char
        $item = str_replace('>','',$item);      //Remove extra char
        $params = explode('-', $item);          //Again, subsplit the key and the value from the item
        $output[$params[1]] = $params[0];       //Push them into an array
    }
}
foreach ($output as $key=>$value) {

    $sql1 = "INSERT INTO `tablename`(`column name`, `column name`) VALUES ('$key','$value')";
    mysql_query($sql1); 

    }
}
?>

这完成了所有工作。定义解析器函数,解析数据并将结果插入数据库

于 2012-08-08T18:20:56.657 回答