Предположим, у меня есть эта уродливая строка:
$uglyString = 'thing.header.setLoadBaseData(true);</script><script type=\'text/javascript\'>window.preload={"serverVersion":"20161019","locale":"en_US","token":{"value":"aAdcDqpeWcaJzmmWeH9ElQ:1477340771943","valid":43200000},"accounts":[{"id":"55153549","datasetId":"a55153549w0p0","s4id":"FU\/llMk3qzAP6ClSIHqMU73huAo=","name":"Ga abd Gub","isPremium":false,"starred":false,"totalNumberOfProfiles":1,"wprops":[{"id":"88276407","datasetId":"a55153549w88276407p0","s4id":"T1xfVTHwcwLUwkUSlzEfZrRYL3E=","name":"GrubHub Preview","number":1,"configuredForAppData":false,"configuredForWebData":true,"isPr';
Из приведенной выше строки мне нужно извлечь значение aAdcDqpeWcaJzmmWeH9ElQ:1477340771943
используя PHP.
Он находится рядом с token
, Токен всегда будет выглядеть как "token":{"value":"aAdcDqpeWcaJzmmWeH9ElQ:1477340771943"
Это то, что у меня есть, но это не работает
preg_match('/(?<=token":{"value":)(.*)(?=.*)/', $uglyString, $matches);
Используйте то, что постоянно, и запишите, что изменится:
preg_match('/"token":{"value":"([^"]+)"/', $uglyString, $matches);
echo $matches[1];
Так что сопоставьте все постоянные вещи до "
, а затем захватить все, что не является "
до финала "
,
Других решений пока нет …