fork(2) download
  1. <?php
  2.  
  3. function extrairDados($dados) {
  4. if (preg_match_all('/Stream\s[#](\d+:\d+)(\(\w+\))?:(\s\w+|)[ :]+(\w+|)/i', $dados, $output) == 0) {
  5. echo 'Nenhuma informação encontrada', PHP_EOL;
  6. } else {
  7. $reorganizado = array(); //Array que terá o resultado final
  8.  
  9. //Chaves que serão usadas para tornar mais intuitivo o que é cada item
  10. $chaves = array(
  11. 'tempo',
  12. 'idioma',
  13. 'formato',
  14. 'codec'
  15. );
  16.  
  17. //Remove o primeiro item do array gerado pelo preg_match_all, ele não é necessário
  18. array_shift($output);
  19.  
  20. //Conta o total de itens
  21. $y = count($output);
  22.  
  23. for ($x = 0; $x < $y; $x++) {
  24. $item = $output[$x]; //Pega o item atual
  25. $chave = $chaves[$x]; //Pega a chave atual para identificar no array
  26. $j = count($item); //Conta "propriedades" do item
  27.  
  28. for ($i = 0; $i < $j; $i++) {
  29.  
  30. //Se não existir o sub-array irá gerar
  31. if (isset($reorganizado[$i]) === false) {
  32. $reorganizado[$i] = array();
  33. }
  34.  
  35. $str = trim($item[$i]); //Remove espaços em branco
  36. $str = trim($str, '('); //Remove ( das extremidades
  37. $str = trim($str, ')'); //Remove ) das extremidades
  38.  
  39. //Salva o item no array chave correspondente
  40. $reorganizado[$i][$chave] = $str;
  41. }
  42. }
  43.  
  44. //Exibe o array
  45. return $reorganizado;
  46. }
  47.  
  48. return false;
  49. }
  50.  
  51. $resposta1 = ' Stream #0:0(und): Video: h264 (High) ...
  52. Stream #0:1(und): Audio: aac (LC) ...';
  53.  
  54. $resposta2 = ' Stream #0:0: Video: mpeg4 ...
  55. Stream #0:1: Audio: mp3 ...';
  56.  
  57. $resposta3 = ' Stream #0:0(und): Video: mpeg4 ...
  58. Stream #0:1(jpn): Audio: mp3 ...
  59. Stream #0:1(por): Subtitle:';
  60.  
  61. print_r(extrairDados($resposta1));
  62. print_r(extrairDados($resposta2));
  63. print_r(extrairDados($resposta3));
  64.  
  65.  
Success #stdin #stdout 0s 82944KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Array
        (
            [tempo] => 0:0
            [idioma] => und
            [formato] => Video
            [codec] => h264
        )

    [1] => Array
        (
            [tempo] => 0:1
            [idioma] => und
            [formato] => Audio
            [codec] => aac
        )

)
Array
(
    [0] => Array
        (
            [tempo] => 0:0
            [idioma] => 
            [formato] => Video
            [codec] => mpeg4
        )

    [1] => Array
        (
            [tempo] => 0:1
            [idioma] => 
            [formato] => Audio
            [codec] => mp3
        )

)
Array
(
    [0] => Array
        (
            [tempo] => 0:0
            [idioma] => und
            [formato] => Video
            [codec] => mpeg4
        )

    [1] => Array
        (
            [tempo] => 0:1
            [idioma] => jpn
            [formato] => Audio
            [codec] => mp3
        )

    [2] => Array
        (
            [tempo] => 0:1
            [idioma] => por
            [formato] => Subtitle
            [codec] => 
        )

)