php写的xml或者自定义格式字符串转换为key-value工具方法
<?php//header("Content-type: text/html;charset=utf-8");
function xml2KV($data,$rootTagName)
{
$parser = xml_parser_create_ns("utf-8");
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, $data, $values, $tags);
xml_parser_free($parser);
foreach ($tags as $key=>$val) {
if ($key == $rootTagName) {
$molranges = $val;
for ($i=0; $i < count($molranges); $i+=2) {
$offset = $molranges[$i] + 1;
$len = $molranges[$i + 1] - $offset;
$tdb[] = parseMol(array_slice($values, $offset, $len));
}
} else {
continue;
}
}
return $tdb;
}
function parseMol($mvalues)
{
for ($i=0; $i < count($mvalues); $i++) {
$mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
}
return new proxyObj($mol);
}
class proxyObj{
function proxyObj($data)
{
foreach($data as $k=>$v)
{
$this->$k=$data[$k];
}
}
}
function str2KV($data)
{
//eg:$topic="userId:123456|topicName:topicname|content:content||userId:1256|topicName:tcname|content:co";
$arr=explode("||",$data);
for($j=0;$j<count($arr);$j++)
{
$arr1=explode("|",$arr[$j]);
for($i=0;$i<count($arr1);$i++)
{
$arr2=explode(":",$arr1[$i]);
$kv[$arr2]=$arr2;
}
$kvarr[$j]=$kv;
}
return $kvarr;
}
?>
页:
[1]