2016-10-24 2 views
0

가정합니다PHP 정규식 내가이 추한 문자열이

$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'; 

위의 문자열을, 내가 PHP를 사용하여 값 aAdcDqpeWcaJzmmWeH9ElQ:1477340771943을 추출해야합니다.

token 옆에 있습니다. "token":{"value":"aAdcDqpeWcaJzmmWeH9ElQ:1477340771943"

이 내가 무슨처럼 토큰은 항상 나타납니다하지만 일정한 무엇

preg_match('/(?<=token":{"value":)(.*)(?=.*)/', $uglyString, $matches); 
+3

'/ "토큰": \ { "값": "([^"] +) "/ [ – AbraCadaver

+0

]이 해결책은 – Angelo

+0

링크입니다. https://regex101.com/r/N4m0u1/1 – chris85

답변

3

사용하여 작동하지 않는 변경 무슨 캡처 :

preg_match('/"token":{"value":"([^"]+)"/', $uglyString, $matches); 
echo $matches[1]; 

그래서 모든 일치 "까지 일정한 물건을 채운 다음 "까지 "이 아닌 모든 것을 캡처하십시오.

+0

이것은 좋은 접근 방식입니다. 정규 표현식을 더 잘 이해해야합니다. – Angelo