2017-10-13 4 views
2

J'ai 2 serveur serverA et serverB.curl ne donne pas de sortie sous forme de chaîne au lieu de tableau

serveur A a le code ci-dessous

$dir = "/boot"; 
echo "<pre>"; 
print_r(listFolders($dir)); 
function listFolders($dir) 
{ 
    $dh = scandir($dir); 
    $return = array(); 
    foreach ($dh as $folder) 
    { 
     if ($folder != '.' && $folder != '..') 
     { 
      if (is_dir($dir . '/' . $folder)) 
      { 
       $return[] = array($folder => listFolders($dir . '/' . $folder)); 
      } 
     } 
    } 
    return $return; 

Cela me donnera la sortie sous forme de tableau dans serverA

Mais quand je curl utilisateur de serverB il me donne des résultats sous forme de chaîne.

Comment obtenir une sortie en tant que tableau à partir du serveurB?

Mon spectacle de sortie comme

Array 
(
    [0] => Array 
     (
      [efi] => Array 
       (
       )  
     )  
    [1] => Array 
     (
      [grub] => Array 
       (
        [0] => Array 
         (
          [fonts] => Array 
           (
           )  
         )  
        [1] => Array 
         (
          [i386-pc] => Array 
           (
           )  
         )  
        [2] => Array 
         (
          [locale] => Array 
           (
           )  
         )  
        [3] => Array 
         (
          [x86_64-efi] => Array 
           (
           )  
         )  
       )  
     )  
) 

mais au-dessus de sortie est de me montrer sous forme de chaîne au lieu de tableau. Essayez de renvoyer la baie au format JSON.

+0

wait, serverA et serverB sont tous deux des serveurs Web, n'est-ce pas? et vous essayez d'obtenir des données de serverA à serverB en utilisant curl? – NoImaginationGuy

Répondre

0

Faire serverA imprimer vos données au format JSON utilisant à la place json_encode() de print_r():

echo json_encode(listFolders($dir)); 

Ensuite, la sortie de cURL (qui sera un tableau JSON STRING) peut être converti en tableau en utilisant json_decode():

$dir_array = json_decode($stringReturnedByCURL); 

cURL est un client HTTP. La seule chose qu'il fait est de retourner la chaîne contenant la page Web HTML. Dans cette page Web, vous pouvez mettre ce tableau JSON.

De cette façon, vous utilisez HTTP pour transporter vos données encodées en JSON de serverA à serverB. La sortie de la page dans votre question imprime simplement le tableau au format print_r, qui n'a pas de fonction pour décoder ce format.

AVERTISSEMENT: vous devez imprimer le JSON ne, supprimer cette echo "<pre>"; du json_decode() dans serverB trouvera un <pre> inattendu dans le code qu'il doit décoder.

0

par ex. return json_encode($return)

modifier 1

si vous voulez transférer une partie de ce genre de données, vous devez le faire au format JSON ou XML

+0

Cela ne sera pas résolu mon but – LOKESH

+1

ok alors veuillez décrire brièvement votre problème. –

+0

J'ai utilisé la commande ci-dessous pour récupérer la sortie $ data = 'sudo/usr/bin/curl --silent -m 15 http: // $ serveraip/treeview.php'; Ceci affiche la sortie sous forme de chaîne au lieu de tableau. – LOKESH