2015-11-23 27 views
6

PHPを使用してウェブサイトをスクラップしてデータを取得しています。私が得るデータは、有効なjavascript配列です。JavaScriptの文字列を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]" 

私は今このphpの文字列を持っていますが、どのようにphp配列に変換できますか?あなたは適切な開始&終了角括弧の区切り文字を追加する場合

+3

(再)[ツアー]を行ってください、そして、[ヘルプ]を読んで:

は、この例のコードを試してみてください? *](/ help/how-to-ask)何を試しましたか?あなたは何を抱きましたか? –

答えて

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

それはjsの有効な配列です。さらに、php jsonパーサの要件に準拠するためには、文字列区切り文字を一重引用符ではなく二重引用符で囲む必要があります。したがって、迅速に置換する必要があります。

あなたはそのようにようにそれをデコードすることができます

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

あなたのメソッドから 'null'を得た理由を知りません – Andrew

+1

@swidmannが問題を発見した可能性があります。一重引用符を二重引用符で置き換える必要があります。私の答えを更新する。 – Calimero

0

あなたは''[ ]を交換して、文字列を破壊してみてください。

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

JSでは一重引用符は有効ですが、JSONに問題があることがあります。 あなたはここでそれを試すことができます:JSONLint

が有効なJSONを取得するには、ちょうどあなたがカッコ[]とあなたの文字列を囲むように持っている配列の配列を取得するには、二重引用符"で単一引用符'を交換してください。私は良い質問をするにはどうすればよい* [特に、周りを見て、

$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

引用符を付けるのが良い点です。 – Calimero

+1

ありがとう、あなたからの素敵な答え;) – swidmann

関連する問題