2009-11-17 32 views

Trả lời

1

Googling cho "phân tích cú pháp php plist" bật lên this bài đăng blog mà dường như để có thể làm những gì bạn đang yêu cầu.

0

Hãy xem một số thư viện ở đó nhưng chúng có yêu cầu bên ngoài và có vẻ quá mức cần thiết. Đây là một hàm đơn giản đặt dữ liệu vào mảng kết hợp. Điều này làm việc trên một vài tập tin itist xuất khẩu itunes tôi đã cố gắng.

// pass in the full plist file contents 
function parse_plist($plist) { 
    $result = false; 
    $depth = []; 
    $key = false; 

    $lines = explode("\n", $plist); 
    foreach ($lines as $line) { 
     $line = trim($line); 
     if ($line) { 
      if ($line == '<dict>') { 
       if ($result) { 
        if ($key) { 
         // adding a new dictionary, the line above this one should've had the key 
         $depth[count($depth) - 1][$key] = []; 
         $depth[] =& $depth[count($depth) - 1][$key]; 
         $key = false; 
        } else { 
         // adding a dictionary to an array 
         $depth[] = []; 
        } 
       } else { 
        // starting the first dictionary which doesn't have a key 
        $result = []; 
        $depth[] =& $result; 
       } 

      } else if ($line == '</dict>' || $line == '</array>') { 
       array_pop($depth); 

      } else if ($line == '<array>') { 
       $depth[] = []; 

      } else if (preg_match('/^\<key\>(.+)\<\/key\>\<.+\>(.+)\<\/.+\>$/', $line, $matches)) { 
       // <key>Major Version</key><integer>1</integer> 
       $depth[count($depth) - 1][$matches[1]] = $matches[2]; 

      } else if (preg_match('/^\<key\>(.+)\<\/key\>\<(true|false)\/\>$/', $line, $matches)) { 
       // <key>Show Content Ratings</key><true/> 
       $depth[count($depth) - 1][$matches[1]] = ($matches[2] == 'true' ? 1 : 0); 

      } else if (preg_match('/^\<key\>(.+)\<\/key\>$/', $line, $matches)) { 
       // <key>1917</key> 
       $key = $matches[1]; 
      } 
     } 
    } 
    return $result; 
} 
+0

Tôi ... có sử dụng cụm từ thông dụng này để thử và phân tích cú pháp XML không? –

+0

trình phân tích cú pháp xml đặt khóa/giá trị của mục nhập plist dưới dạng các thực thể riêng biệt trong bản nhạc. điều này đặt chúng như các mảng được gán giá trị khóa./shrug –

+0

Bạn đang dựa vào đó là các dòng mới và các thẻ xml được hình thành cụ thể. –

Các vấn đề liên quan