Re: PHP von Perl aufrufen und Wert zurückgeben - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Sander (8133 Beiträge) am Mittwoch, 1.Januar.2014, 01:18.
    Re: PHP von Perl aufrufen und Wert zurückgeben

      so hier:

      $hash_str=php ('
         $data2 = json_decode('{ "foo": 1, "bar": [10, "apples"] }', true);
         return serialize($data2);
           ');
      $hash_ref=unserial($hash_str);
      %hash=%$hash_ref;
      


    Ihre Antwort:

    Name: EMail: EMail bei Antwort? WWW:
    Titel:
    Text:

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    Beitrag von H.Fehde (724 Beiträge) am Dienstag, 31.Dezember.2013, 21:31.
    PHP von Perl aufrufen und Wert zurückgeben

      Quelle:(http://doku.baseportal.de/162.html)

      Ich gerate in Konflikte mit dem ' , wenn ich mit php "json-Daten" verarbeiten möchte;
      das bp-Perl verarbeitet ja leider kein:

      <perl>
      my $data = decode_json('{ "foo": 1, "bar": [10, "apples"] }');
      </perl>
      

      Also hab ich folgende versucht:

      <perl>
      $X=php qq(return phpversion(););
      $Y=php '$sample = array( "blue" => array(1,2), "ocean" => "water" );return json_encode($sample);';
      $Y1=php qq($sample = array( "blue" => array(1,2), "ocean" => "water" );return json_encode($sample););
      $Z =php '$data2 = json_decode('{ "foo": 1, "bar": [10, "apples"] }', true);return $data2';
      

      outl "PHP-Version: $X"; # OK, läuft
      outl "json_string: $Y"; # OK, läuft
      outl "json_string: $Y1";# NOT
      outl "decode_json: $Z"; # NOT
      </perl>
      

      Leider funktioniert dies nur für die Variablen $X und $Y, wie aber sieht es in Fällen wie $Y1 oder $Z aus.
      Hat jemand eine Ahnung - für eine Tipp wäre ich sehr dankbar.

      Gruß H.Fehde

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 1.Januar.2014, 01:18.
    Re: PHP von Perl aufrufen und Wert zurückgeben

      so hier:

      $hash_str=php ('
         $data2 = json_decode('{ "foo": 1, "bar": [10, "apples"] }', true);
         return serialize($data2);
           ');
      $hash_ref=unserial($hash_str);
      %hash=%$hash_ref;
      

     Antworten

    Beitrag von H.Fehde (724 Beiträge) am Mittwoch, 1.Januar.2014, 03:21.
    Re: Re: PHP von Perl aufrufen und Wert zurückgeben

      Das mit serialize() zu machen, hatte ich auch schon ausprobiert.

      Nee Nee, daran liegt es nicht nicht, dein Code bringt den Fehler:

      syntax error at (eval 20) line 3, near "' $data2 = json_decode('{ " (Might be a runaway multi-line '' string starting on line 2)

      Wie ich geschrieben hatte: problem ist das ' .

      Ich habs teilw. mit q() gelöst:

      $hash_str = php q($json='{ "foo": 1, "bar": [10, "apples"] }';return serialize(json_decode($json,1)););
      

      $hash_str ist dann= a:2:{s:3:"foo";i:1;s:3:"bar";a:2:{i:0;i:10;i:1;s:6:"apples";}}

      OK soweit, so gut - und jetzt:

      $hash_ref=unserial($hash_str);
      %hash=%$hash_ref;
      out serial(%hash);
      

      serial(%hash) ist dann= ("bar",{"0"=>10,"1"=>"apples"},"foo",1)

      Wie Du siehst, wird ist der key-Wert von "bar" KEIN array !

      Gruß Harald

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 1.Januar.2014, 12:17.
    Re: Re: Re: PHP von Perl aufrufen und Wert zurückgeben

      ok, ich hab deinen mit meinem ungetestet gemerged...

      so klappts bei mir

      <perl>
      $json=<<EOF;
      { "foo": 1, "bar": [10, "apples"] }
      EOF
      

      $hash_string=php("
       return serialize(json_decode('".$json."',1));
      
      ");

      $hash_ref=unserial($hash_string);
      

      %hash=%$hash_ref;



      out dump(%hash);
      </perl>
      

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 1.Januar.2014, 12:21.
    Re: Re: Re: PHP von Perl aufrufen und Wert zurückgeben

      achso, wieder nur halb gelesen.

      bar ist wiederum eine referenz auf einen hash, den du dann in ein array transferieren kannst.
      in php ist ein array gleichzeitig eine assoc array mit den indizes als wert und wird so serialisiert. da kannste wohl nix anderes machen, als das so aufzudröseln

     Antworten

    Beitrag von H.Fehde (724 Beiträge) am Mittwoch, 1.Januar.2014, 13:17.
    Re: Re: Re: Re: PHP von Perl aufrufen und Wert zurückgeben

      Ich finde,

      die bessere Alternative wäre, JSON in baseportal-Perl zu implemetieren.
      [use JSON; # imports encode_json, decode_json, to_json and from_json.]

      Dann bräuchte ich den ganzen Quatsch/Umweg mit

      $hash_str = php q($json='{
      

      nicht. Gruß Harald

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 1.Januar.2014, 19:00.
    Re: Re: Re: Re: Re: PHP von Perl aufrufen und Wert zurückgeben

      ist es aber nicht, also musst du damit arbeiten, was da ist.

     Antworten


     
 Liste der Einträge von 2700 bis 2850:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.09s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!