php 解析info.plist,PHP解析XML格式的Plist文件

//全局变量

$xml_parser=””;

$songs=array();

$number_dicts=0;

$current_key=””;

$current_element=””;

$current_data=””;

$end_of_songs=FALSE;

//文件路径

$target = ‘./test.plist’;

//文件名称

$filename = ‘test.plist’;

//建立一个 XML 解析器

$xml_parser = xml_parser_create();

xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1);

xml_set_element_handler($xml_parser, “start_element”, “end_element”);

xml_set_character_data_handler($xml_parser, “character_data”);

if (!($fp = @fopen($target, “r”))) {

return false;

}

while ($data = fread($fp, 4096)) {

if (!xml_parse($xml_parser, $data, feof($fp))) {

die(sprintf(“XML error: %s at line %d in file %s\n”,

xml_error_string(xml_get_error_code($xml_parser)),

xml_get_current_line_number($xml_parser),

$filename));

}

}

//释放指定的 XML 解析器

xml_parser_free($xml_parser);

function start_element($parser, $name, $attribs) {

global $current_element, $number_dicts;

if($name==”DICT”){

$number_dicts++;

}

if ($number_dicts>1){

$current_element=$name;

}

}

function end_element($parser, $name) {

global $songs, $current_element, $current_data, $number_dicts, $array_key, $end_of_songs;

if($end_of_songs){

return;

}

if(!empty($current_element)) {

if($current_element==”KEY”){

$array_key=$current_data;

}else{

$songs[$number_dicts][$array_key] .= $current_data;

}

}

}

function character_data($parser, $data) {

global $number_dicts, $current_data, $end_of_songs, $prev_data;

if($data==”Playlists”) {

$end_of_songs=TRUE;

}

$data = str_replace(array(“\r\n”), ”, $data);

$current_data=trim($data);

if(strpos($current_data, “’”) > -1 || strpos($current_data, “’”) > -1 || strpos($current_data, “,”) > -1) {

$current_data = $prev_data.$current_data;

}

else {

$prev_data = $current_data;

}

}

//输出结果

echo ‘

’;

print_r($songs);

echo ‘

’;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值