2015-11-23 25 views
6

Przeszukuję witrynę za pomocą php, aby uzyskać dane. Dane, które otrzymuję, to poprawna tablica javascript.Konwertuj ciąg znaków javascript na tablicę php

  "['v42, 2015', 23428, 30243, 76993] 
       , 
      ['v43, 2015', 24060, 30401, 73412] 
       , 
      ['v44, 2015', 22855, 29720, 71573] 
       , 
      ['v45, 2015', 24455, 30757, 78991] 
       , 
      ['v46, 2015', 24275, 30398, 84424]" 

Mam teraz ten ciąg w php, ale jak mogę go przekonwertować na tablicę php?

+3

proszę (re) objęcie [trasy], rozejrzeć i zapoznać się z [pomocy], w szczególności [* Jak mogę zadać dobre pytanie? *] (/ help/how-to-ask) Co próbowaliście? Co utknąłeś? –

Odpowiedz

6
$string = "['v42, 2015', 23428, 30243, 76993] 
       , 
      ['v43, 2015', 24060, 30401, 73412] 
       , 
      ['v44, 2015', 22855, 29720, 71573] 
       , 
      ['v45, 2015', 24455, 30757, 78991] 
       , 
      ['v46, 2015', 24275, 30398, 84424]"; 

Jest to ważny js tablicy jeśli dodać prawidłowego startu & końcowy nawiasach kwadratowych separatora. Ponadto, aby spełnić wymagania php json parsera, ograniczniki łańcuchów muszą być podwójnie cytowane zamiast pojedynczych cytatów, dlatego należy dokonać szybkiej wymiany.

wtedy może dekodować go tak:

$ary = json_decode('['.str_replace("'",'"',$string).']', true); 
+0

Nie wiem, dlaczego dostałem 'null' ze swojej metody – Andrew

+1

@swidmann prawdopodobnie zauważył problem, pojedyncze cytaty należy zastąpić podwójnymi cudzysłowami. aktualizowanie mojej odpowiedzi. – Calimero

0

Można spróbować wymienić [ ] z '' a następnie zerwania łańcucha.

$string = str_replace(']', '', str_replace('[', '',$string)); 
$array = explode(',', $string); 
2

Pojedyncze cytaty mogą być ważne w JS, ale czasami JSON ma z tym problem. Można spróbować tu: JSONLint

Aby uzyskać prawidłowy JSON, tylko wymienić apostrofów ' z cudzysłowach ", aby uzyskać tablicę z tablic trzeba otoczyć ciąg z nawiasami [].

Spróbuj przykładowy kod:

$string = "['v42, 2015', 23428, 30243, 76993] 
       , 
      ['v43, 2015', 24060, 30401, 73412] 
       , 
      ['v44, 2015', 22855, 29720, 71573] 
       , 
      ['v45, 2015', 24455, 30757, 78991] 
       , 
      ['v46, 2015', 24275, 30398, 84424]"; 

$string = str_replace("'" , '"', $string); 
$string = '['.$string.']'; 

echo "<pre>"; 
var_dump(json_decode($string)); 
+1

Dobrze wypunktować kwestię cytatów. – Calimero

+1

dobrze dzięki, dobra odpowiedź od ciebie;) – swidmann

Powiązane problemy