2010-10-07 23 views
7

Bir JS dizisini PHP'ye nasıl alacağımı anlayamıyorum.PHP'de javascript dizilerini ayrıştırma

Böyle görünüyor ile çalışmak zorunda Ne: sadece google, dön geçersiz

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 ve diğerleri sadece JS-anlayış tarayıcısından bir HTTP POST ile serialize() kullanmak için bazı garip bir şekilde döndürür x

============================: gerçekten

herkes nasıl herhangi bir ipucu var mı burada çalışamaz = 0 =

düzenleme: Teşekkürler çocuklar! Bunun doğru olmadığını biliyor muydunuz

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

Bu diziyi PHP'ye kopyalamaya/yapıştırmaya mı çalışıyorsunuz? Genellikle, PHP'ye gönderdiğiniz herhangi bir JS dizisi, bir biçimde veya başka bir biçimde serileştirilir. Bunu nasıl kullanmaya çalıştığınıza dair bir örnek verebilir misiniz? – mway

+0

Bir cron işi (benim kontrolüm altında değil) yakalar ve example.js olarak kaydeder. Her saat değişir, ben de onu PHP'ye okuyorum ve sonra onu ayrıştırmaya çalışıyorum. Temelde bir düz metin dosyası olarak görünür ve ben sadece (veya bash) – jen

+0

ile çalışabilirim bunu deneyebilirsiniz: var_dump (json_decode ($ arrLow)); $ arrLow, normalde bir formda veya AJAX tarafından javascript'ten gönderilir. –

cevap

8

Bunun için json_decode() kullanabilirsiniz. Hile var arrLow = bölümünü terk etmektir (böylece sadece dizinin kendisi kalır). Böyle php değişkeni $arrLow değer atayabilirsiniz:

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

bir quick'n'dirty kesmek strstr() fonksiyonunu kullanmak olacaktır başlangıcını kaldırın.

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

Daha hızlı ne olurdu, strstr() veya str_replace()? Sadece merak. – jen

+0

Kesinlikle bilmiyorum ama sanırım strstr() 'daha hızlı olmalı. Bunu doğrulayamıyorum ama php.net'deki bir kişi strstr() 'inin strpos()! == false'den daha hızlı olduğunu buldu (http://ch2.php.net/manual/en/function) # 39236 .strstr.php. Eğer bu doğruysa, muhtemelen str_replace() 'dan daha hızlıdır. – svens

+0

Tamam, strstr. Yardımlarınız için çok teşekkürler, gerçekten takdir ediyorum. Çok kolay olduğunu düşünmedim .. – jen

1

2 seçenekleri:

  1. Sadece ön var arrLow = çıkarın (onun değişken eğer bir regex gerekebilir) ve json olarak ayrıştırmak. javascript parsing
0

tam için

  • Git JSONLint doğrulayıcı göre bu (var arrLow = olmadan) geçerli JSON olduğunu. Yani herhangi bir iyi json_decode() uygulama hile yapmalıdır. Belki kullandığınız uygulamanın belirli sınırlamaları var mı? JSON.org web sitesi temiz bir list of links to implementations of json_decode in PHP (ve diğer birçok dil) de vardır. Çalışılan birini bulacağınızdan emin olabilirsiniz.

  • 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);   
    
    İlgili konular