Kann ich eine PLIST-Datei mit PHP analysieren und irgendwie in ein Array bekommen, wie die $_POST['']
, also könnte ich $_POST['body']
anrufen und die Zeichenfolge erhalten, die die <key> body
hat?Wie analysiert man eine .plist-Datei mit PHP?
13
A
Antwort
22
1
Googeln für „PHP-plist-Parser“ aufgedreht this Blog-Post, die in der Lage sein scheint zu tun, was Sie fordern.
0
Ich habe mir einige Bibliotheken angesehen, aber sie haben externe Anforderungen und scheinen übertrieben zu sein. Hier ist eine Funktion, die die Daten einfach in assoziative Arrays einfügt. Dies funktionierte auf ein paar exportierte iTunes plist-Dateien, die ich ausprobierte.
// 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;
}
Verwandte Themen
- 1. wie man eine Baumdatenstruktur analysiert?
- 2. Wie man eine "Binding-Schleife" analysiert
- 3. Wie analysiert man eine C-Header-Datei?
- 4. Wie man Text analysiert
- 5. Wie analysiert man eine spärliche Adjazenzmatrix?
- 6. Wie analysiert man Programmlaufzeit
- 7. Wie man SOAP XML analysiert?
- 8. Wie man XML mit ShellScript syntaktisch analysiert?
- 9. Wie analysiert man HTTP-Header mit libcurl?
- 10. Wie analysiert man HTTP-Header mit Bash?
- 11. Wie analysiert man eine lateinische/ideographische Volltextabfrage korrekt mit Regex?
- 12. Wie analysiert man eine XML Ajax Antwort mit jQuery?
- 13. Wie analysiert man eine Liste in Python mit re
- 14. Wie analysiert man eine EPS-Datei mit C#?
- 15. Wie analysiert man eine Textdatei mit dem folgenden Muster
- 16. Wie analysiert man eine JSON-Datei mit jQuery?
- 17. Wie man eine Dauer-Zeichenfolge in Sekunden mit Javascript analysiert?
- 18. Wie analysiert man dies mit GSON?
- 19. Wie analysiert man Daten mit REGEXP_SUBSTR?
- 20. Wie man einen algebraischen Ausdruck analysiert
- 21. Wie analysiert man diesen zurückgegebenen Wert in PHP
- 22. Wie man einen Videostream analysiert
- 23. Wann wird eine PHP-Include-Datei analysiert?
- 24. Wie analysiert man Aggregationspipeline-Ergebnisse?
- 25. PHP-String mit Blick analysiert voraus
- 26. Wie man eine Fließkommazahl manuell von einer Zeichenkette analysiert
- 27. Wie man eine Sequenz von "" getrennten Werten in Haskell analysiert
- 28. Wie analysiert man eine Sammlung von C++ - Header-Dateien?
- 29. Android Interner Speicher, wie man eine JSON-Textdatei richtig analysiert
- 30. Wie analysiert man eine Zeichenkette zu einer Ganzzahl ohne Bibliotheksfunktionen?
I ... verwendet dies reguläre Ausdrücke zum Testen und Parsen von XML? –
XML-Parser setzen den Schlüssel/Wert des PLIST-Eintrags als separate Entitäten in der Spur. Dadurch werden sie als Arrays mit Schlüsselwert zugewiesen./shrug –
Sie verlassen sich darauf, dass es neue Zeilen und speziell geformte XML-Tags gibt. –