2013-07-16 47 views
1

這裏有我想要刮示範頁面...從Javascript數組刮?

[ 
[4056, 1, 'Saturday, Aug 18 2012', '15:00', 171], 
[4057, 1, 'Saturday, Aug 18 2012', '15:00', 94], 
[4058, 1, 'Saturday, Aug 18 2012', '15:00', 175], 
[4059, 1, 'Saturday, Aug 18 2012', '15:00', 29], 
[4051, 1, 'Saturday, Aug 18 2012', '15:00', 13], 
[4053, 1, 'Saturday, Aug 18 2012', '15:00', 170], 
[4055, 1, 'Saturday, Aug 18 2012', '17:30', 23], 
[4060, 1, 'Sunday, Aug 19 2012', '13:30', 194], 
[4054, 1, 'Sunday, Aug 19 2012', '16:00', 16], 
[4052, 1, 'Monday, Aug 20 2012', '20:00', 31], 
[4123, 1, 'Wednesday, Aug 22 2012', '19:45', 15] 
] 

下面的代碼,我通常會使用類似的東西...

$str = file_get_contents('http://www.thewebsite.com/info/'); 
$jsonarray = json_decode($str, true); 

$id = $jsonarray['id']; 

但正如你所看到的...這是不一樣的。另外,我甚至不知道第一頁是否在JSON中(這是一個JS Array的權利?)。

我怎麼會從這個刮到單個項目放入變量/數組?

回答

1

的數據是無效的JSON。

如果您知道內容將不包含其他單引號,而不是字符串包裝,那麼您可以簡單地用雙引號替換單引號以更正JSON格式。

$fixedJSON = str_replace("'", '"', $str); 
$data = json_decode($fixedJSON); 

foreach($data as $row) 
{ 
    echo $row[2]; // Saturday, Aug 18 2012 
} 

如果內容可以包含除弦包裝其他那麼這將是很難糾正的JSON,因爲你只需要在數據內更換包裝報價和處理報價單引號可能會或可能不會逃脫。例如,雙引號需要轉義,單引號需要轉義轉義。

+0

是的..它會是這樣的每次和你的解決方案工作。謝謝你保持簡單<3 – Cully

+1

沒問題:)快樂的編碼! – MrCode

0

它應該是:因爲它使用單引號代替雙引號包裹字符串

$str = file_get_contents('http://www.thewebsite.com/info/'); 
$jsonarray = json_decode($str, true); 

$id = $jsonarray[0][0]; // 4056 
$id1 = $jsonarray[1][0]; // 4057 
// etc 
+0

但數據不是JSON,所以'json_decode '不行! –

+0

@Matyunin我試過這個,但它不起作用..不收拾東西。 – Cully

+1

是的,有問題的數據不是有效的JSON,我們需要使用'$ fixedJSON = str_replace(「'」,''',$ str);'就像在第一個答案中一樣。 – Matyunin

0

保持在陣列中的變量.....

var jsonarray = json_decode($str, true); 

    var len = jsonarray.length 
    for (var i=0; i<len; ++i) { 
     var s = myStringArray[i]; 
    } 
1

對不起,一個醜陋的解決方案:\你可以使用str_replace

<?php 
    $str = preg_replace("/'(.+?)'/", '"$1"', $str); 
    var_dump(json_decode($str)); 
?>