Hегулярное выражение, цикл, json
Есть json
{"pages":[{"objects":[{"id":"company_name","obj_type":"text","text":"Автосервис "Милор" "},{"id":"company_adres","obj_type":"text","text":"Ул. Генерала Тюленева 2С1"},{"id":"phone","obj_type":"text","text":"89653561815"}]}} и мне нужно делать проверку на содержание не нужных кавычек, в по свойству text и если таковые есть удалять "text":"Автосервис "Милор" " должно остаться "text":"Автосервис Милор " предполагаю что нужно выдергивать значения между /"text":"/ и /"}/ проверять на наличие кавычек, если есть удалять и вставлять обратно, но как все это провернуть не могу представить |
пусть будет строка которую нужно преобразовать в json, цикл не знаю нужен будет или нет, перебирать как то надо, т.к. text в строке несколько раз встречается(кстати количество text может быть и 4, и 5, и 6)
И почему кавычки в json должны быть экранированы в обязательном порядке? |
кавычки не в моей власти экранировать, есть то что есть
нужно заменить, кавычки которые внутри все остальное меня мало сейчас интересует, преобразование строки в объект и дальнейшие действия сейчас не суть важны. Если знаете как решить вопрос с кавычками подскажите, если нет, то спасибо за внимание, я вас услышал |
Откуда эта строка берется?
|
Цитата:
|
Цитата:
|
Цитата:
Решение: генерить json нормальной функцией, а не колхозить его на коленке конкатенацией. Тогда получите нормальный обхект и можете там заменить что угодно на что хотите. Кстати, колхозят жисоны те, кто до сих пор гниет в кодировке 1251. |
Цитата:
|
Сначала расскажите когда перейдете на юникод.
|
Даже юникод?! А почему?
|
Потому что json_encode(), применительно к пхп, работает только с юникодом. Поэтому те, кто не удосужился еще избавиться от виндовой кодировки и колхозят жисоны конкатенацией и косячат как видите.
Кстати, я как-то потратил полдня пытаясь наладить импорт-экспорт csv по юникоду. Х нанэ. Екзель utf-8 не понимает в принципе, ему надо нормальный юникод, а php когда делает csv в нормальном юникоде - глючит на кириллице. Пришлось забить и конвертить туда-сюда. В смысле fputcsv($handle,array_map(function($s) use($encoding){return mb_convert_encoding($s,$encoding);},$row),$delimiter); fputcsv не ескепит кириллицу если в $encoding воткнуть ключ нормального юникода. Я уже забыл как он называется, пробовал и big и little endian - эквипенисуально. Екзель - мастдай. |
Цитата:
|
var json = pseudojson.replace(/(:\s*")(.+?)("\s*[\]},])/g, function(a,b,c,d){ return b + c.replace(/"/g,'\\"') + d });Только вам не поможет. Ваша "колхозная" функция ещё и скобочки забывает. kostyanet, нормально utf8 он понимает, весь секрет в обязательном наличии BOM.) <script>document.write( '<a href="data:application/vnd.ms-excel;utf8,', encodeURIComponent('1; Фэйл\n2; =('), '" download="noBOM.csv">noBOM</a>', '<br>', '<a href="data:application/vnd.ms-excel;utf8,', encodeURIComponent('\ufeff1; Вин\n2; =)'), '" download="BOM.csv">BOM</a>' )</script> |
Часовой пояс GMT +3, время: 20:22. |