php
  • javascript
  • arrays
  • 2010-10-07 21 views 7 likes 
    7

    Ich kann nicht herausfinden, wie man ein JS-Array in PHP bekommen.Parsing Javascript Arrays in PHP

    Was ich habe, mit Blicken wie dies funktioniert:

    var arrLow = [ 
    { 
    "e": "495864", 
    "rank": "8678591", 
    "rankmove": "<p><img src='up.php?uStyle=144'> UP 495864" 
    }, 
    { 
    "e": "104956", 
    "rank": "-", 
    "rankmove": "<p><img src='up.php?uStyle=145'> DOWN 1" 
    }, 
    { 
    "e": "0", 
    "rank": "0", 
    "rankmove": "<p><img src='up.php?uStyle=975'> NEW" 
    } 
    ] 
    

    json_decode und andere nur NULL zurück, Google liefert nur einige seltsame Weise serialize() zu verwenden, mit einem HTTP POST von einem JS-Verständnis Browser, der kann es wirklich nicht hier arbeiten

    Hat keine Ahnung jemand wie: x

    ============================ ==========================================

    edit: Danke Jungs! Wusste nicht, dass es so einfach war

    <?php 
    $json = file_get_contents('24d29b1c099a719zr8f32ce219489cee.js'); 
    $json = str_replace('var arrLow = ','' ,$json); 
    $data = json_decode($json); 
    echo $data[0]->e; 
    ?> 
    
    +0

    Versuchen Sie, dieses Array in PHP zu kopieren/einzufügen? Im Allgemeinen wird jedes JS-Array, das Sie an PHP senden, in der einen oder anderen Form serialisiert. Können Sie ein Beispiel dafür geben, wie Sie es verwenden möchten? – mway

    +0

    Ein Cron-Job (nicht unter meiner Kontrolle) ergreift es und speichert es als example.js. Es ändert sich jede Stunde, und ich lese es nur in PHP und versuche dann, es zu parsen. Es erscheint im Grunde als eine Klartextdatei, und ich kann nur mit PHP (oder Bash) arbeiten – jen

    +0

    Sie können dies versuchen: var_dump (json_decode ($ arrLow)); wo $ arrLow von Javascript gesendet wird, normalerweise in einem Formular oder von AJAX. –

    Antwort

    8

    Sie können dafür json_decode() verwenden. Der Trick besteht darin, den var arrLow = Teil wegzulassen (so dass nur das Array selbst übrig bleibt). Sie können den Wert auf die PHP-Variable $arrLow wie folgt vergeben:

    $js = '[ {"e" : "495864", ...'; 
    $arrLow = json_decode($js); 
    

    Ein quick'n'dirty Hack, um den Anfang zu entfernen wäre, die strstr() Funktion zu verwenden.

    $js = strstr('var arrLow = [ {..', '['); 
    
    +0

    Was wäre schneller, strstr() oder str_replace()? Nur neugierig. – jen

    +0

    Ich weiß es nicht sicher, aber ich denke, 'strstr()' sollte schneller sein. Ich kann es nicht bestätigen, aber jemand auf php.net hat festgestellt, dass 'strstr()' schneller ist als der Ausdruck 'strpos()! == false' (http://ch2.php.net/manual/en/function .strstr.php # 39236). Wenn das stimmt, ist es wahrscheinlich viel schneller als 'str_replace()'. – svens

    +0

    In Ordnung, aktualisiert, um strstr zu verwenden. Vielen Dank für Ihre Hilfe, wirklich zu schätzen wissen. Ich dachte nicht, dass es so einfach war. – jen

    1

    2 Optionen:

    1. einfach die var arrLow = an der Front entfernen (vielleicht einen regulären Ausdruck, wenn seine Variable benötigen) und als json analysiert.
    2. Go für voll auf javascript parsing
    0

    Nach dem JSONLint Validator dies gilt JSON (ohne var arrLow =). Also jede gute json_decode() Implementierung sollte den Trick tun. Vielleicht hat die Implementierung, die Sie verwenden, bestimmte Einschränkungen? Die JSON.org-Website hat eine nette list of links to implementations of json_decode in PHP (und viele andere Sprachen auch). Sie können sicher sein, einen zu finden, der funktioniert.

    0
    //define javascript array 
    >var mainArray = {};  
    >  // inner loops 
    mainArraySub['XXX'] = [];  
    
          mainArray = JSON.stringify(mainArray); 
         passing javascript array content in jquery ajax request as 
         $.ajax({ 
         type: "POST", 
        data:{paramval:mainArray}, 
        dataType: "json", 
        url: url, 
        success: function(msg){ 
    
          } 
         });  
    
    
    in POST request you will get as below 
    
    {"row1":{"0":{"nnnn":"aaaa"},"1":{"Movie":"aaaa"},...}   
    
    // in a.php file call as below 
    
    $Info = $_REQUEST['rowdata']; 
    $tre = json_decode(stripslashes($Info),true); 
    var_dump($tre);   
    
    Verwandte Themen