PHP читает неверный json с помощью json_decode ();

У меня есть неверные внешние данные JSON, без двойных кавычек вокруг имен.

Пример:

{
  data: [
    {
      idx: 0,
      id: "0",
      url: "http://247wallst.com/",
      a: [
        {
          t: "Title",
          u: "http://247wallst.com/2012/07/30/",
          sp: "About"
        }
      ],
      doc_id: "9386093612452939480"
    },
    {
      idx: 1,
      id: "-1"
    }
  ],
  results_per_page: 10,
  total_number_of_news: 76,
  news_per_month: [20, 0, 8, 1, 1, 2, 0, 2, 1, 0, 0, 1, 1, 0, 5, 1, 1, 1, 0, 2, 5, 16, 7, 1],
  result_start_num: 2,
  result_end_num: 2,
  result_total_articles: 76
}

Как вы видите, многие имена, такие как data, idx, id, url и другие, не заключаются в двойные кавычки, поэтому это делает json недействительным. Как я могу сделать этот внешний JSON действительным? Я уже пробовал str_replace, заменив & apos; {& apos; на "{"; " и ':' to "": " добавление двойных кавычек вокруг имен без кавычек, но это приводит к путанице в некоторых уже двойных кавычках.

Как я могу сделать этот json действительным, чтобы я мог читать эти данные с помощью PHP json_decode? Я не очень знаком с preg_replace ...

Действительный JSON будет выглядеть так:

{
  "data": [
    {
      "idx": 0,
      "id": "0",
      "url": "http://247wallst.com/",
      "a": [
        {
          "t": "Title",
          "u": "http://247wallst.com/2012/07/30/",
          "sp": "About"
        }
      ],
      "doc_id": "9386093612452939480"
    },
    {
      "idx": 1,
      "id": "-1"
    }
  ],
  "results_per_page": 10,
  "total_number_of_news": 76,
  "news_per_month": [20, 0, 8, 1, 1, 2, 0, 2, 1, 0, 0, 1, 1, 0, 5, 1, 1, 1, 0, 2, 5, 16, 7, 1],
  "result_start_num": 2,
  "result_end_num": 2,
  "result_total_articles": 76
}

Пожалуйста, предложите мне функцию php preg_replace.

Источник данных: http://www.google.com/finance/company_news?q=aapl&output=json&start=1&num=1

Ответы на вопрос(2)

Ваш ответ на вопрос