2013-08-20 55 views
0

我在解析HTML頁面時遇到了問題。在JavaScript中有一個變量,我需要把它變成json格式。PHP - 使用preg_match解析javascript數組()

<script> 
    var variable1 = "foo"; 
    var variable2 = "boo"; 
    var multipleArray = [ 
      {"var1":"1", 
      "var2": [{ 
       "var21":"Extra Lge", 
       "var22":"45923090470", 
       "var23": {"key1":"value1", 
          "key2":"value"} 
       }], 
       ...etc... 
      }] 
</script> 

有沒有簡單的方法,如何獲得var multipleArray和所有的鍵和值?我用preg_match()

preg_match("'var multipleArray = [\{.*?\}]'", $source, $matches); 

但它返回$matches爲空數組()。

我在做什麼錯了?我與reg.ex合作。是0 :(

水平,我會任何幫助很高興:)謝謝你這麼多:)

+0

你應該只通過ajax以純JSON格式傳遞變量,然後在PHP端捕獲它並使用它。 – DevZer0

+0

我不行。因爲我解析外部網站。 – wohral

+0

你應該使用類似https://developer.mozilla.org/en-US/docs/Rhino – DevZer0

回答

0

隨着次以下的模式,你應該得到的陣列,而不使用var multipleArray標識符。

preg_match('/\[(\{(.*)\})\]/', $source, $matches); 

現在要獲取關鍵值對,你必須解析它。 或者如果你想有一個快速,骯髒和邪惡的勝利,你可以做到以下幾點:

你用str_replace()用'='''替換每個':','[''用'[', '}]'與']','{'與'[','}'與']'。

有了結果字符串($結果),你做到以下幾點:

$result_array = null; 
eval('$result_array = '.$result); 

現在$ result_array包含您的陣列。