如何解析mysql表中的列, <14-abc>;<8-def>;
如:
abc =14
def = 8
abc 存储值 14 和 def 存储值 8 并具有多个条目。
因此需要存储类似的数组或列表,以便以后能够访问和处理解析的数据。
我不知道有任何解析器支持这种语法,因此您可以为如此琐碎的事情编写自己的解析器。这是一个示例,未经测试:
$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
数组。你甚至可以将它包装成一个函数;)
?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);
}
}
?>
这完成了所有工作。定义解析器函数,解析数据并将结果插入数据库