2016-10-24 4 views
0

Supposons que j'ai cette chaîne laide:PHP regex pour trouver jeton dans la chaîne laide

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

de la chaîne ci-dessus, je dois extraire la valeur aAdcDqpeWcaJzmmWeH9ElQ:1477340771943 en utilisant PHP.

Il se trouve à côté de token. Le jeton apparaîtra toujours comme "token":{"value":"aAdcDqpeWcaJzmmWeH9ElQ:1477340771943"

C'est ce que j'ai, mais il ne fonctionne pas

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

'/" jeton ": \ {" valeur ":" ([^ "] +)"/' – AbraCadaver

+0

Ceci est la solution – Angelo

+0

Lien: https://regex101.com/r/N4m0u1/1 – chris85

Répondre

3

Utilisez ce qui est constant et capturer ce qui va changer:

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

correspondent donc tous les trucs constants jusqu'à la ", puis capturer tout ce qui n'est pas un " jusqu'à la fin ".

+0

C'est une bonne approche pour ça. – Angelo