Спарсить первое значение если имеется или другое если оно отсутствует

Sergo_Sev

Творец
Регистрация
14 Июн 2008
Сообщения
578
Реакции
193
Имеется исходный код примерно такой структуры

Код:
{"id":"138878678_296759228 -----------------куча разных бесполезных данных-----------------
"x_src":"http:\/\/cs323223.userapi.com\/v323223678\/6290\/lLEGX-ZsWDs.jpg","x_":["6290\/lLEGX-ZsWDs",604,441],
"y_src":"http:\/\/cs323223.userapi.com\/v323223678\/6291\/Mf_YswGANVs.jpg","y_":["6291\/Mf_YswGANVs",807,589],
"z_src":"http:\/\/cs323223.userapi.com\/v323223678\/6292\/3HuZ5HzKEsA.jpg","z_":["6292\/3HuZ5HzKEsA",900,657],
"o_src":"http:\/\/cs323223.userapi.com\/v323223678\/6293\/DFQM69MiBxk.jpg","o_":["6293\/DFQM69MiBxk",130,95],
"p_src":"http:\/\/cs323223.userapi.com\/v323223678\/6294\/psXlWGA2taY.jpg","p_":["6294\/psXlWGA2taY",200,146],
"q_src":"http:\/\/cs323223.userapi.com\/v323223678\/6295\/DbAPIrfw82w.jpg","q_":["6295\/DbAPIrfw82w",320,234],
"r_src":"http:\/\/cs323223.userapi.com\/v323223678\/6296\/Eq86WK4Q_4I.jpg","r_":["6296\/Eq86WK4Q_4I",510,372]},
 
{"id":"138878678_292180276" -----------------куча разных бесполезных данных-----------------
"x_src":"http:\/\/cs411925.userapi.com\/v411925678\/7e49\/6By_f1Gy_24.jpg","x_":["7e49\/6By_f1Gy_24",446,604],
"y_src":"http:\/\/cs411925.userapi.com\/v411925678\/7e4a\/Y_Eo24WXq_M.jpg","y_":["7e4a\/Y_Eo24WXq_M",596,807],
"z_src":"http:\/\/cs411925.userapi.com\/v411925678\/7e4b\/4LlP4L0e20I.jpg","z_":["7e4b\/4LlP4L0e20I",756,1024],
"w_src":"http:\/\/cs411925.userapi.com\/v411925678\/7e4b\/4LlP4L0e20I.jpg","w_":["7e4b\/4LlP4L0e20I",1365,2048],
"o_src":"http:\/\/cs411925.userapi.com\/v411925678\/7e4c\/lARQsplbciw.jpg","o_":["7e4c\/lARQsplbciw",130,176],
"p_src":"http:\/\/cs411925.userapi.com\/v411925678\/7e4d\/XTd7GCt-_H8.jpg","p_":["7e4d\/XTd7GCt-_H8",200,271],
"q_src":"http:\/\/cs411925.userapi.com\/v411925678\/7e4e\/BuXg1dbfn_8.jpg","q_":["7e4e\/BuXg1dbfn_8",320,433],
"r_src":"http:\/\/cs411925.userapi.com\/v411925678\/7e4f\/MCJnVmzjmR8.jpg","r_":["7e4f\/MCJnVmzjmR8",510,691]},{"id":"138878678_296542282"


И вот так я хотел получить ссылку на фотку нужного размера

Код:
preg_match ('!138878678_296759228.*w_src\":\"(.*?)\",\"w_!ism',$url,$img);
Проблема в том, что если фотки с размером w_src нет, то я получаю ссылку на следующую фотку (в том месте где w_src содержится).
Мне нужно, что бы если размера w_src не было то брался z_src, а если и его нет то y_src, но никак не ссылка на другую фотку из следующего блока
Как это реализовать?
 
preg_match это тяжко для процессора, может сделаешь json_decode и цикл foreach с вложенными if/else?
 
Я пока плохо в php разбираюсь, preg_match самый простой вариант. Да и процессор переживет т.к. парсить совсем мало
Но тут не ясно как ограничиться поиском в блоке с конкретным ID если мы не знаем размер этого блока, что бы к точно указать какой кусок кода брать и какие значения из него выбрать

Если можете - приведите пример для данного случая с json_decode т.к. не понял вообще как работает эта функция, верней как мне ее использовать, но все же я склоняюсь к preg_match
 
Назад
Сверху