Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中解析javascript数组_Php_Javascript_Arrays - Fatal编程技术网

在PHP中解析javascript数组

在PHP中解析javascript数组,php,javascript,arrays,Php,Javascript,Arrays,我似乎不知道如何将JS数组导入PHP 我必须处理的问题如下: 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"

我似乎不知道如何将JS数组导入PHP

我必须处理的问题如下:

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"
}
]
$js = '[ {"e" : "495864", ...';
$arrLow = json_decode($js);
var arrLow=[
{
“e”:“495864”,
“等级”:“8678591”,
“rankmove”:“向上495864”
},
{
“e”:“104956”,
“职级”:“—”,
“rankmove”:“向下1”
},
{
“e”:“0”,
“等级”:“0”,
“rankmove”:“新建”
}
]
json_decode和其他方法只返回NULL,google只返回一些奇怪的方法,使用JS理解浏览器的HTTP POST使用serialize(),这在这里真的不起作用

有人知道怎么做吗:x

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

编辑:谢谢大家!我不知道这么容易

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

您可以使用它。诀窍是去掉
var arrLow=
部分(这样只剩下数组本身)。您可以将值分配给php变量
$arrLow
,如下所示:

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"
}
]
$js = '[ {"e" : "495864", ...';
$arrLow = json_decode($js);
一个快速的'n'肮脏的黑客删除开始将是使用该功能

$js = strstr('var arrLow = [ {..', '[');
2种选择:

  • 只需删除前面的
    var arrLow=
    (如果变量是正则表达式,则可能需要正则表达式),并将其解析为json
  • 全力以赴

  • 根据验证器,这是有效的JSON(没有
    var arrLow=
    )。因此,任何好的
    json\u decode()
    实现都应该做到这一点。也许您正在使用的实现有一定的局限性?JSON.org网站有一个整洁的页面(还有许多其他语言)。您一定能找到一个有效的数组。

    您是否试图将该数组复制/粘贴到PHP中?通常,发送到PHP的任何JS数组都将以某种形式序列化。你能举一个例子说明你是如何使用它的吗?一个cron作业(不在我的控制之下)会抓住它并将其保存为example.js。它每小时都在变化,我只是把它读入PHP,然后尝试解析它。它基本上是一个纯文本文件,我只能使用PHP(或bash),您可以试试这个:var_dump(json_decode($arrLow));其中$arrLow是从javascript发送的,通常是以表单形式或通过AJAX发送的?只是好奇。我不确定,但我想
    strstr()
    应该更快。我无法确认,但php.net上的某个人发现
    strstr()
    比表达式
    strpos()!==错误
    ()。如果这是真的,它可能比str_replace()快得多。。好的,更新为使用strstrstr。非常感谢你的帮助,非常感谢。没想到这么容易。。
    //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);