За последние 24 часа нас посетили 17085 программистов и 1834 робота. Сейчас ищут 1568 программистов ...

Строка в массив

Тема в разделе "PHP для новичков", создана пользователем Intrerio, 18 апр 2018.

  1. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    В продолжение предыдущей своей темы есть вопрос.
    При переходе на ссылку внешнего ресурса мне предлагают скачать файл типа 1.txt . После открытия вижу:
    Код (Text):
    1. {"order"=>{"id"=>1, "created_at"=>"2014-05-08T13:06:08.000+03:00", "updated_at"=>"2018-04-18T10:22:44.000+03:00", "type_order"=>"GO", "misce"=>"filia", "crash_date"=>"2014-04-30", "uved_date"=>"2014-05-05", "suma_zbytku"=>"0.0", "suma_expertyza"=>"0.0", "date_strah_akt"=>nil, "date_viplaty"=>nil, "regress"=>false, "regress_name"=>"до СК \"КРАЇНА\"", "risk"=>"dtp", "notes"=>"регрес можливо", "poster_id"=>23, "adjuster_id"=>23, "filial_id"=>1, "state"=>"otkaz_sbor_documentov", "key_timestamp"=>nil, "time_call"=>"14:45:00", "vigodonabyvach"=>nil, "date_nadhodg_GO"=>nil, "gorod"=>"Харків", "kod"=>"", "street"=>"пр-т. Московський ", "yregulir"=>false, "num_schem_dtp"=>nil, "degree_of_guilt"=>nil, "prog_strah"=>"", "strahovatel_id"=>1, "order_name"=>"ЦВ-2014-1", "crash_time"=>"14:30:00", "pis_uv_date"=>"2014-05-05", "damage_strah"=>"передня права частина", "suma_expert_ot"=>nil, "sb_s"=>false, "ur_s"=>false, "ex_s"=>false, "pp_s"=>false, "ny_s"=>false, "regress_type"=>"urik", "first_m"=>false, "last_m"=>false, "night_out_city"=>false, "naezd_dog"=>false, "second_man_leave"=>false, "no_damage_true"=>false, "damage_before"=>false, "vse_ok"=>false, "t_ny_s"=>false, "t_sb_s"=>false, "t_ur_s"=>false, "t_pp_s"=>false, "rezerv"=>"12000.0", "degree_of_damage"=>nil, "strahovik_victim"=>nil, "ins_num_victim"=>nil, "driver_fio"=>"Вільожний Євген Володимирович", "driver_date_birth"=>"1980-01-01", "driver_male"=>"male", "driver_ind_code"=>"11111111111", "driver_telephone"=>"0", "driver_adress"=>"Закарпатська обл.,м.Виноградів,вул.Лейзмана,27", "driver_status_osob"=>"fizik", "driver_resident"=>true, "ser_prava"=>"0", "nom_prava"=>"0", "driver_owner"=>false, "claim"=>false, "claim_to"=>nil, "need_perelicdocs"=>"[1,2,3,4,5,13,14,15,16,17,18,19,20,21,22]", "date_pod_zayav"=>nil, "plane_date_viplaty"=>nil, "avarkom"=>nil, "regress_type_sp"=>nil, "regress_edrpo"=>nil, "regress_adress"=>nil, "regress_phone"=>nil, "regress_plato"=>false, "regress_neplato"=>false, "regress_nekontakt"=>false, "regress_date_end"=>nil, "vreg_na_misci"=>false, "oglyad_na_misci"=>false, "oglyad_sk"=>false, "express_vypl"=>false, "zamov_nez_exp"=>false, "avariyniy_id"=>nil}, "strahovatel"=>{"id"=>1, "owner_fio"=>"Вільможний Володимир Самойлович", "owner_date_birth"=>"1980-10-01", "owner_male"=>"male", "owner_ind_code"=>"1111111111", "owner_adress"=>"----", "owner_status_osob"=>"fizik", "owner_resident"=>false, "ins_number"=>"АС/8763434 ", "property"=>"ВАЗ", "created_at"=>"2014-05-08T12:53:19.000+03:00", "updated_at"=>"2015-02-05T12:57:33.000+02:00", "gos_nomer"=>"05155КО", "god_vipyska"=>0, "owner_stag_vogd"=>10, "srok_deyst_policy_ot"=>"2013-10-12", "srok_deyst_policy_do"=>"2014-10-11", "date_oplat_policy"=>"2013-10-12", "franshiza"=>"1000.0", "filial_id"=>41, "owner_telephone"=>"---", "vin_code"=>"ХТА210630J1847429", "suma_strah"=>"50000.0", "suma_strah_plat"=>"268.52", "date_pidpus_policy"=>"2013-10-12", "sub_property"=>"21063", "zone_sale"=>nil}, "comments"=>[], "logs"=>[{"id"=>325415, "created_at"=>"2018-04-18T10:22:44.000+03:00", "updated_at"=>"2018-04-18T10:22:44.000+03:00", "ht_key"=>nil, "message"=>"Невідома транзакція типу zip", "user_id"=>115, "logable_id"=>1, "logable_type"=>"Order", "action"=>"zip", "params"=>"{\"key\":\"F26CkhfvV_BaudmGZRMlXOdQP6PTCEfvKljPMkWZne0V_taLj2euleGrQud7Qhid||115\",\"export\":\"true\",\"controller\":\"orders\",\"action\":\"zip\",\"id\":\"1\"}"}, {"id"=>325413, "created_at"=>"2018-04-18T10:22:08.000+03:00", "updated_at"=>"2018-04-18T10:22:08.000+03:00", "ht_key"=>nil, "message"=>"Невідома транзакція типу zip", "user_id"=>115, "logable_id"=>1, "logable_type"=>"Order", "action"=>"zip", "params"=>"{\"key\":\"F26CkhfvV_BaudmGZRMlXOdQP6PTCEfvKljPMkWZne0V_taLj2euleGrQud7Qhid||115\",\"export\":\"true\",\"controller\":\"orders\",\"action\":\"zip\",\"id\":\"1\"}"}, {"id"=>325412, "created_at"=>"2018-04-18T10:21:05.000+03:00", "updated_at"=>"2018-04-18T10:21:05.000+03:00", "ht_key"=>nil, "message"=>"Невідома транзакція типу zip", "user_id"=>115, "logable_id"=>1, "logable_type"=>"Order", "action"=>"zip", "params"=>"{\"key\":\"F26CkhfvV_BaudmGZRMlXOdQP6PTCEfvKljPMkWZne0V_taLj2euleGrQud7Qhid||115\",\"export\":\"true\",\"controller\":\"orders\",\"action\":\"zip\",\"id\":\"1\"}"}, {"id"=>325411, "created_at"=>"2018-04-18T10:20:50.000+03:00", "updated_at"=>"2018-04-18T10:20:50.000+03:00", "ht_key"=>nil, "message"=>"Невідома транзакція типу zip", "user_id"=>115, "logable_id"=>1, "logable_type"=>"Order", "action"=>"zip", "params"=>"{\"key\":\"F26CkhfvV_BaudmGZRMlXOdQP6PTCEfvKljPMkWZne0V_taLj2euleGrQud7Qhid||115\",\"export
    Помогите это чудо преобразовать в массив.
     
  2. laszlopv

    laszlopv Активный пользователь

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
  3. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Попробовал в первую очередь.Получаю NULL
     
  4. laszlopv

    laszlopv Активный пользователь

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
    тогда explode()
    --- Добавлено ---
    тут в принципе видно вложенность массива, можно приспособиться чтобы его перестроить заново.
     
  5. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Этот вариант тоже попробовал только тогда черт ногу сломить в многомерности и возможна потеря данныхесли последующие файлы будут отличаться по структуре. Их будет около 17000. Вот думал может я чего то не знаю и может есть какае то определенная функция которая может инициализировать строку и преобразовать ее в массив.Ладно буду копать далее
     
  6. laszlopv

    laszlopv Активный пользователь

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
    Я бы разложил в блокнотике эту строчку для себя в дерево, видно, что order это первый массив в который складываются остальные, заполняете его, а пом по уже внутри добываете остальные массивы или просто берете, что вам нужно.
     
  7. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Я вот тоже так подумал что так будет проще. Самое интересное что мне городят что это json массив но он частично похож на json
     
  8. laszlopv

    laszlopv Активный пользователь

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
    Я как только увидел, тоже подумал, что Json но со второго раза понял, что нет.
     
  9. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Значит все же не дурак)). Большое спасибо за помощь. Если не договорюсь с админами ресурса то буду разбивать explode на части и выделять json формат и отдельно обыкновенный массив. Спасибо еще раз
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.787
    Симпатии:
    1.328
    Адрес:
    Лень
    $array = json_decode ( input_json_string, true );
    --- Добавлено ---
    + у тебя в конце трабла с json
     
  11. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Именно эта функция и выдает NULL. Какой именно трабл? Я привел лишь часть данных которые лежат в txt файле поэтому сообщение обрезано
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.787
    Симпатии:
    1.328
    Адрес:
    Лень
    значит json поврежден, не доходят, или руки крюки и т.д.
     
  13. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Вот тут лежит код целеком. Дайте пожалуйста варианты как его распарсить, а еще лучше сложить все это в массив
    http://forit.leoweb.site/1_json1.txt
     
  14. Emilien

    Emilien Активный пользователь

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    Просто нужно разуть глаза и внимательно посмотреть чем разделяется ключ и значение. Там не json.
    Там вместо двоеточия использется => и nil, а не null.
    --- Добавлено ---
    Костыль чтоб поправить синтаксис в удобоваримый для json_decode.
    PHP:
    1. $str = file_get_contents('1_json1.txt');
    2.  
    3. $str = str_replace('=>nil', '=>null', $str);
    4. $str = preg_replace('~\G(?:[^"]*"(?:[^"\\\\]+|\\\\.)*+")+?\K=>~', ':', $str);
    5.  
    6. $d = json_decode($str, true);
    7.  
    8.  
     
    Intrerio нравится это.
  15. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Все верно.То что это не JSON понятно с первой строчки. Вот собственно трабл в том что эти данные мне надо стянуть с удаленного ресурса, подготовить их к заливке в нашу систему и потом еще подтянуть файлы под каждое дело.Таких файлов у меня 17000 - тоесть сами понимаете что вручную я этого точно не сделаю. Теперь вот сижу и думаю как разобрать этого "слона".
    --- Добавлено ---
    Самое интересное что Ваш вариантя ранее пробовал только не учел проблему с nil и у меня не работало, а с Вашим вариантом все аж полетело)).Сейчас более детально разберусь что к чему получилось и отпишусь.Большое спасибо
     
  16. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.787
    Симпатии:
    1.328
    Адрес:
    Лень
    :rolleyes: ой точняк :D
     
  17. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    А что это за формат такой? И не json и не массив странно. Я бы предложил заменит => на : но там еще и данные не полные
     
  18. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    Ты не очень любишь читать, да? :)
     
  19. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Все равно вопрос открыт. Чем это сделали и зачем?)
    --- Добавлено ---
    я так понимаю это "фича" wordpress? http://leoweb.site/
     
  20. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Самому интересно чем это сделали. Сама система удаленного ресурса откуда беру файл написана Ruby On Rails. Почему мне выдают в таком формате файл я понимаю (политическая ситуация между компаниями).Но вот как это сделали для меня этозагадка :)
     
  21. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.575
    Симпатии:
    1.759
    Может Ruby сериализацию в таком странном формате делает? Я правда про этот язык только название знаю
     
  22. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Вы знаете мне кажется что тут более вмешательство ручек админов но может и руби дает такое. Благодаря Emilien моя ситуация пошла на улучшение. Сейчас делаю структуру данных под требования нашей системы и буду сегодня стартовать переливку данных.
     
  23. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510