I’m using PHP/CURL to automate calls between 2 closely tied code igniter.
Code igniter is returning two set-cookie headers, one for a secure cookie with the real session data, one for insecure connections with an empty session…
Set-Cookie: overshare=a%3A0%3A%7B%7D; expires=Thu, 17-Jun-2010 05:09:32 GMT; path=/
Set-Cookie: overshare=BdHJPVt...STsCxnMBj; path=/; secure
I’ve been trying to parse the secure cookie (both sites are on the same domain so if I get updated session information via CURL, I should update the clients cookie as if they made the call directly)
I’m currently using the following to parse the cookie:
preg_match('/Set-Cookie: (.*)\b/', $Head, $Cookies);
which gives me in $Cookies:
Array
(
[0] => Set-Cookie: overshare=a%3A0%3A%7B%7D; expires=Thu, 17-Jun-2010 05:09:32 GMT; path
[1] => overshare=a%3A0%3A%7B%7D; expires=Thu, 17-Jun-2010 05:09:32 GMT; path
)
but this is only matching the first set-cookie header. My regex skills are poor – how can I match the second header?
Assuming
$Headis a single string containing all of the cookie headers, you’re looking forpreg_match_all().preg_match()stops after finding the first match.With
preg_match_all(), matched entire strings will be in$Cookies[0]. Your subpattern matches will be in$Cookies[1].yields
Also, your wildcard
(.*)is greedy by default, so it may consume both strings together if the headers aren’t on separate lines. If so, try(.*?)to make it ungreedy.