¿Puedo analizar un archivo plist con php y ponerlo en una matriz, como $_POST['']
, así que podría llamar al $_POST['body']
y obtener la cadena que tiene el <key> body
?Cómo analizar un archivo .plist con php?
13
A
Respuesta
22
1
Google para "intérprete PHP plist" da como resultado this blog que parece ser capaz de hacer lo que está pidiendo.
0
Echa un vistazo a algunas de las bibliotecas, pero tienen requisitos externos y parecen excesivas. Aquí hay una función que simplemente coloca los datos en matrices asociativas. Esto funcionó en un par de archivos itunes plist exportados que probé.
// 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;
}
Cuestiones relacionadas
- 1. PHP - analizar un archivo txt
- 2. ¿Cómo puedo analizar un archivo JSON con PHP?
- 3. crear un archivo plist programáticamente
- 4. cómo analizar JSONP con PHP
- 5. Compartiendo un archivo plist utilizando iCloud
- 6. Cómo duplicar un archivo PHP con PHP
- 7. Analizar operaciones matemáticas con PHP
- 8. Cómo analizar el archivo INI con Boost
- 9. Buscando una clase PHP para analizar un archivo access.log
- 10. Escribir/Leer archivo plist iPhone
- 11. Cómo cargar un UIColor de un Plist
- 12. Cómo analizar un archivo tar en C++
- 13. Analizar un archivo JavaScript a través de PHP
- 14. Cómo analizar un archivo Excel en JavaScript?
- 15. Cómo analizar un archivo de 7 GB con Data.ByteString?
- 16. Cómo analizar un archivo de texto con C#
- 17. ¿Cómo buscar y analizar un archivo XML con AppleScript?
- 18. Crear archivo de manifiesto inalámbrico (extensión .plist) con Xcode
- 19. cómo puedo analizar un archivo dtd
- 20. Cómo analizar un archivo CSV en Bash?
- 21. iOS: almacene dos NSMutableArray en un archivo .plist
- 22. ¿Cómo generar un archivo .json con PHP?
- 23. ¿Cómo crear un archivo PDF con PHP?
- 24. Vaciado un archivo con php
- 25. Xcode plist file - comentarios desaparecidos, archivo reformateado
- 26. Cómo analizar XML en php?
- 27. Cómo analizar un archivo yaml desde un servicio en Symfony2
- 28. Pasos para crear y editar un archivo plist en Xcode
- 29. arrayWithContentsOfFile no puede leer el archivo plist
- 30. Analizando un archivo .htaccess con PHP
I ... ¿está utilizando expresiones regulares para intentar analizar XML? –
Los analizadores xml ponen la clave/valor de la entrada plist como entidades separadas en la pista. esto los pone como matrices atribuidas a valores clave./shrug –
Confía en que haya líneas nuevas y etiquetas xml específicamente formadas. –