2015-11-23 16 views
6

Ich kratze eine Website mit PHP, um einige Daten zu erhalten. Die Daten, die ich bekomme, sind ein gültiges Javascript-Array.Convert Javascript String in PHP-Array

  "['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]" 

Ich habe jetzt diese Zeichenfolge in PHP, aber wie kann ich es in ein PHP-Array konvertieren?

+3

Bitte (re) nehmen Sie die [tour], schauen sich um, und lesen Sie die [Hilfe], insbesondere [* Wie stelle ich eine gute Frage? *] (/ help/how-to-ask) Was hast du probiert? Was hast du feststecken? –

Antwort

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]"; 

Es ist eine gültige js Array, wenn Sie den richtigen Start & Ende eckigen Klammern Trennzeichen hinzufügen. Um den Php-Json-Parser-Anforderungen zu entsprechen, müssen die String-Delimiter außerdem doppelt zitiert werden anstatt einfach zitiert zu werden, so dass ein schneller Austausch durchgeführt werden muss.

Sie können es dann entschlüsseln, wie so:

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

weiß nicht, warum ich 'null' von Ihrer Methode – Andrew

+1

bekam @swidmann wahrscheinlich das Problem entdeckt, die einzelnen Anführungszeichen müssen durch doppelte Anführungszeichen ersetzt werden. Aktualisierung meiner Antwort. – Calimero

0

Sie können versuchen, die [ ] mit '' und dann die Zeichenfolge brechen zu ersetzen.

2

Die einzelnen Anführungszeichen können in JS gültig sein, aber JSON hat manchmal ein Problem damit. Sie können es hier versuchen: JSONLint

Um eine gültige JSON zu erhalten, ersetzen nur die einfachen Anführungszeichen ' mit doppelten Anführungszeichen ", ein Array mit Arrays erhalten Sie Ihre String mit Klammern [] umgeben müssen.

diesen Beispielcode Versuchen:

$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

guter Punkt, der das Anführungsstrichproblem aufdeckt. – Calimero

+1

na danke, nette antwort von dir auch;) – swidmann