ФорумПрограммированиеPHP для идиотов → Перегнать что-то в массив

Перегнать что-то в массив

  • Paktik

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 13 октября 2012 г. 13:17

    Помогите определить что за код, выдран он из конфигурации игры от Valve, и его нужно перегнать в массив.
    		"4009"
    {
    "name" "Demon Blood Armor"
    "prefab" "dota_item"
    "item_slot" "armor"
    "item_rarity" "uncommon"
    "image_inventory" "econ/items/axe/demon_blood_armor"
    "model_player" "models/items/axe/demon_blood_armor.mdl"
    "set_parent_skin" "1"
    "item_set" "axe_demon_blood"
    "used_by_heroes"
    {
    "npc_dota_hero_axe" "1"
    }
    "attributes"
    {
    "kill eater score type"
    {
    "attribute_class" "kill_eater_score_type"
    "value" "0"
    }
    }
    "icon_portrait"
    {
    "PortraitPosition" "167.273041 -30.888405 184.089783"
    "PortraitLookAt" "13.375854 173.726807 359.313354"
    "PortraitFOV" "44.000000"
    "PortraitFar" "1000.000000"
    "PortraitLightPosition" "202.699997 -23.150000 308.170013"
    "PortraitLightLookAt" "54.790001 171.699997 0.000000"
    "PortraitLightFOV" "69.000000"
    "PortraitLightDistance" "377.000000"
    "PortraitLightColor" "0.900000 0.900000 0.900000"
    "PortraitShadowColor" "0.070000 0.070000 0.070000"
    "PortraitShadowScale" "1.000000"
    "PortraitGroundShadowScale" "0.300000"
    "PortraitAmbientOrigin" "79.070000 84.150002 25.320000"
    "PortraitAmbientColor" "0.080000 0.150000 0.150000"
    "PortraitAmbientScale" "1.000000"
    "PortraitSpecularColor" "0.970000 0.070000 0.090000"
    "PortraitSpecularDirection" "0.000000 0.000000 -1.000000"
    "PortraitSpecularPower" "16.000000"
    "PortraitBackgroundColor1" "1.000000 0.500000 0.500000"
    "PortraitBackgroundColor2" "1.000000 0.800000 0.900000"
    "PortraitBackgroundColor3" "0.000000 0.000000 0.000000"
    "PortraitBackgroundColor4" "1.000000 0.500000 0.500000"
    "PortraitBackgroundTexture" "vgui/econ/item_icon_bg"
    "PortraitAnimationActivity" "1"
    "PortraitAnimationCycle" "0.960000"
    "PortraitAnimationRate" "0.000000"
    "PortraitHideHero" "0"
    }
    }
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 13 октября 2012 г. 14:51, спустя 1 час 34 минуты 26 секунд

    двоеточия проебаны, а так жейсон
    Высокоуровневое абстрактное говно
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 13 октября 2012 г. 15:04, спустя 12 минут 50 секунд

    json_not_full_encoded :D
    Сапожник без сапог
  • Paktik

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 13 октября 2012 г. 15:26, спустя 22 минуты 13 секунд


    двоеточия проебаны, а так жейсон
    А вот нехуя, все на месте.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 13 октября 2012 г. 15:28, спустя 2 минуты 7 секунд



    двоеточия проебаны, а так жейсон
    А вот нехуя, все на месте.
    ну вставил то ты без двоеточий.
    Спустя 12 сек.
    если ты ваще понл о чем мы тут говорим и о каких двоеточиях.
    Сапожник без сапог
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 13 октября 2012 г. 16:04, спустя 35 минут 39 секунд

    таки запятых тоже нет
    Высокоуровневое абстрактное говно
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 13 октября 2012 г. 16:52, спустя 47 минут 57 секунд

    json_str_space_str_encode();- а их не слушай… как посоветуют вякого. Вообще развелось тут всяких…
  • Paktik

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 14 октября 2012 г. 4:43, спустя 11 часов 51 минуту 30 секунд

    Петросяны 80 уровня прям
  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 14 октября 2012 г. 5:04, спустя 20 минут 56 секунд

    Paktik, вооружись текстовым редактором и делай поиск-с-заменой, пока не получишь нужный массив.
    ιιlllιlllι унц-унц
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 14 октября 2012 г. 5:05, спустя 39 секунд

    Paktik, не тупи, тебе уже сказали, расставь двоеточия и запятые да отдай жейсон парсеру, вот тебе и будет массив.
    Высокоуровневое абстрактное говно
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 14 октября 2012 г. 8:19, спустя 3 часа 14 минут 24 секунды

    Неведомая хуйня, которая все сделает:
    $data = <<<DATA
    "4009"
           {
               "name"    "Demon Blood Armor"
               "prefab"        "dota_item"
               "item_slot"  "armor"
               "item_rarity"      "uncommon"
               "image_inventory"      "econ/items/axe/demon_blood_armor"
               "model_player"    "models/items/axe/demon_blood_armor.mdl"
               "set_parent_skin"      "1"
               "item_set"    "axe_demon_blood"
               "used_by_heroes"
               {
                   "npc_dota_hero_axe"  "1"
               }
               "attributes"
               {
                   "kill eater score type"
                   {
                       "attribute_class"      "kill_eater_score_type"
                       "value"  "0"
                   }
               }
               "icon_portrait"
               {
                   "PortraitPosition"    "167.273041 -30.888405 184.089783"
                   "PortraitLookAt"        "13.375854 173.726807 359.313354"
                   "PortraitFOV"      "44.000000"
                   "PortraitFar"      "1000.000000"
                   "PortraitLightPosition"  "202.699997 -23.150000 308.170013"
                   "PortraitLightLookAt"      "54.790001 171.699997 0.000000"
                   "PortraitLightFOV"    "69.000000"
                   "PortraitLightDistance"  "377.000000"
                   "PortraitLightColor"        "0.900000 0.900000 0.900000"
                   "PortraitShadowColor"      "0.070000 0.070000 0.070000"
                   "PortraitShadowScale"      "1.000000"
                   "PortraitGroundShadowScale"  "0.300000"
                   "PortraitAmbientOrigin"  "79.070000 84.150002 25.320000"
                   "PortraitAmbientColor"    "0.080000 0.150000 0.150000"
                   "PortraitAmbientScale"    "1.000000"
                   "PortraitSpecularColor"  "0.970000 0.070000 0.090000"
                   "PortraitSpecularDirection"  "0.000000 0.000000 -1.000000"
                   "PortraitSpecularPower"  "16.000000"
                   "PortraitBackgroundColor1"    "1.000000 0.500000 0.500000"
                   "PortraitBackgroundColor2"    "1.000000 0.800000 0.900000"
                   "PortraitBackgroundColor3"    "0.000000 0.000000 0.000000"
                   "PortraitBackgroundColor4"    "1.000000 0.500000 0.500000"
                   "PortraitBackgroundTexture"  "vgui/econ/item_icon_bg"
                   "PortraitAnimationActivity"  "1"
                   "PortraitAnimationCycle"        "0.960000"
                   "PortraitAnimationRate"  "0.000000"
                   "PortraitHideHero"    "0"
               }
           }
    DATA;
    $result = '{'.preg_replace('/((:\s"[^"]+")|})(?=\s*[^}\s])/s','\1,',preg_replace('/^\s*("[^"]+")\s+(("[^"]+")|{)$/m','\1: \2',$data)).'}';
    var_dump(json_decode($result, true));
    В случае, если имеются эскейпированные символы " в именах или значениях атрибутов, работать не будет
    Кстати да, регулярки нужно запретить на законодательном уровне
    Work, buy, consume, die
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 14 октября 2012 г. 8:46, спустя 26 минут 24 секунды

    Кстати да, регулярки нужно запретить на законодательном уровне

    почему?
    Сапожник без сапог
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 14 октября 2012 г. 9:28, спустя 42 минуты 13 секунд

    потому что нихнена не понятно, вот взгялув на предпоследнюю строку в коде с ходу можешь сказать, что оно делает, и как оно работает? =)
    Work, buy, consume, die
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 14 октября 2012 г. 11:12, спустя 1 час 43 минуты 40 секунд

    Nyaah, а чё юзать тогда? да и комментарии никто не отменял…
  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 14 октября 2012 г. 11:54, спустя 42 минуты

    Nyaah, да блин, почему регулярка без каментов? незачет
    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!