2013-09-02 6 views
2

Я пытаюсь извлечь печенье из следующей строки:Regular Expression, чтобы соответствовать несколько шаблонов в Php

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

Поэтому я попытался

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

Это не должно заставить меня все вхождения строк между «Set-Cookie:» и «;»?

я получил:

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

Спасибо за объяснение.

ответ

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

Дает:

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 
    ) 

) 
1

Просто удалите первый .* и использовать preg_match_all:

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

@downvoter: Любая причина ? – Toto

0

Попробуйте один

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

+0

Вам не нужно избегать дефисов. Или пробелы. – Ryan

Смежные вопросы