Разбор файлов формата Valve в PHP
Я полностью застрял в том, как начать синтаксический анализ таких файлов в PHP. Это своего рода массивы с переменным количеством подмассивов. https://developer.valvesoftware.com/wiki/KeyValues
Пример файла.
"itembuilds"
{
"author" "Valve"
"hero" "npc_dota_hero_axe"
"Title" "Recommended items for Axe"
"Items"
{
"#DOTA_Item_Build_Starting_Items"
{
"item" "item_stout_shield"
"item" "item_flask"
"item" "item_tango"
"item" "item_courier"
}
"#DOTA_Item_Build_Early_Game"
{
"item" "item_boots"
"item" "item_ring_of_health"
"item" "item_tango"
"item" "item_tango"
}
"#DOTA_Item_Build_Core_Items"
{
"item" "item_blink"
"item" "item_vanguard"
}
"#DOTA_Item_Build_Luxury"
{
"item" "item_heart"
"item" "item_blade_mail"
}
}
}
Еще один пример файла.
"dota_shops"
{
"consumables"
{
"item" "item_clarity"
"item" "item_tango"
"item" "item_flask"
"item" "item_smoke_of_deceit"
"item" "item_tpscroll"
"item" "item_dust"
"item" "item_courier"
"item" "item_flying_courier"
"item" "item_ward_observer"
"item" "item_ward_sentry"
"item" "item_bottle"
}
"something"
{
"Key" "value"
"Key2" "value"
}
}
2 ответа
Поздний ответ, но только что видел это. Данные по вопросу находятся в (Формат данных Valve)[https://developer.valvesoftware.com/wiki/KeyValues], также называемый форматом KeyValues, и очень напоминает JSON.
Около года назад я написал этот скрипт, который может конвертировать данные VDF в действительный JSON. Вы можете использовать его один раз и сохранить сгенерированный JSON или вызывать его в любое время, когда вам нужен JSON из VDF.
Там онлайн я нашел. http://rossengeorgiev.github.io/vdf-parser/
В репозитории есть реализации js и python, их не должно быть слишком сложно перенести на PHP.