magic_al
magic_al

Reputation: 2200

Regular Expression to match multiple patterns in Php

I try to extract the Cookies from the following String:

< Server: Apache
< Set-Cookie: fe_typo_user=b4f33487c434684655dccf65a0499010; path=/
< Set-Cookie: PHPSESSID=d8pgb31olkc9c1jc5tc5qn23a1; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT

Therefore I tried

/.*Set-Cookie: (.*?); /s

Shouldn't that get me all occurrences of strings between "Set-Cookie: " and ";"?

I received:

array(2) {
   [0]=> string(137) \"< Server: Apache
         < Set-Cookie: fe_typo_user=b4f33487c434684655dccf65a0499010; path=/
         < Set-Cookie: PHPSESSID=d8pgb31olkc9c1jc5tc5qn23a1; \"
   [1]=> string(36) \"PHPSESSID=d8pgb31olkc9c1jc5tc5qn23a1\"
}

Thanks for explanation.

Upvotes: 3

Views: 800

Answers (3)

Allen Chak
Allen Chak

Reputation: 1960

Try this one

/Set\-Cookie:\ ([^;]+);/

Upvotes: 0

Petah
Petah

Reputation: 46060

preg_match_all('/Set-Cookie: (.*?);/is', $data, $result);

Gives:

Array
(
    [0] => Array
    (
        [0] => Set-Cookie: fe_typo_user=b4f33487c434684655dccf65a0499010;
        [1] => Set-Cookie: PHPSESSID=d8pgb31olkc9c1jc5tc5qn23a1;
    )

    [1] => Array
    (
        [0] => fe_typo_user=b4f33487c434684655dccf65a0499010
        [1] => PHPSESSID=d8pgb31olkc9c1jc5tc5qn23a1
    )

)

Upvotes: 2

Toto
Toto

Reputation: 91518

Just remove the first .* and use preg_match_all:

preg_match_all('/Set-Cookie: (.*?); /s', $str, $m);

Upvotes: 1

Related Questions