регулярные выражения

Shade

:)
регулярные выражения

есть код:
PHP:
HTTP/1.1 200 OK Date: Mon, 16 May 2005 07:50:01 GMT Server: Apache/1.3.33 (ALT Linux/alt1) PHP/4.3.10-ALT X-Powered-By: PHP/4.3.10-ALT Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: 429496729=b1cd4458b20f78c427db4401143eb8b8; path=/ Connection: close Transfer-Encoding: chunked Content-Type: text/html;charset=windows-1251
подскажите как извлечь Set-Cookies: 429496729=b1cd4458b20f78c427db4401143eb8b8;

:confused:
 

Serguitar

Новичок->продвинутый
Shade
Давай вместе по порядку.
Если ты имеешь понятие о регулярных выражениях, то сделать это несложно.
Итак: ты знаешь, что обязательным совпадением для того, чтобы начать выборку, будет
Set-Cookie:. Так? Записываешь в регулярное выражение. Дальше. До знака равенства идут цифры. Букв там быть не может, но сколько цифр и какие они мы тоже не знаем. Пишем ([0-9]+). После знака равенства идут буквы и цифры и заканчивается вся эта канитель точно с запятой. Всё остальное тебе не нужно. Вот и напиши регулярное выражение используя preg_match, которое из твоего кода извлечёт только то, что находится между Set-Cookie: и первой ;.
 

Shade

:)
PHP:
$pattern = "\^([0-9]+)$/";
preg_match($pattern, $header, $matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);
что тут я не так пишу?
 

specialist

Guest
PHP:
$header='HTTP/1.1 200 OK Date: Mon, 16 May 2005 07:50:01 GMT Server: Apache/1.3.33 (ALT Linux/alt1) PHP/4.3.10-ALT X-Powered-By: 
PHP/4.3.10-ALT Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, 
must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: 429496729=b1cd4458b20f78c427db4401143eb8b8; 
path=/ Connection: close Transfer-Encoding: chunked Content-Type: text/html;charset=windows-1251';
$pattern = '/Set-Cookie:(.+?);/i';
preg_match_all($pattern, $header, $matches, PREG_PATTERN_ORDER);
echo $matches[0][0];
 

alexhemp

Новичок
Shade

Прочти что ответил тебе Serguitar

Итак: ты знаешь, что обязательным совпадением для того, чтобы начать выборку, будет
Set-Cookie:. Так? Записываешь в регулярное выражение.
Ты это записал?

Если прочтешь внимательно его пост, поймешь, что регулярное выражение должно быть построено из 4-х частей

1. "Set-Cookie:"
2. [0-9] не менее одного символа
3. знак =
4. 32 символа MD5 хэша в 16-тиричном представлении т.е. 0-9 и a-f

что-то типа

\Set-Cookie: ([0-9]+)=([0-9a-f]{32})\i

модификатор i нужен чтобы подстраховаться на предмет разного регистра. В общем идея такая ;-)

скобки выделяют подвыражения, которые нужны, чтобы потом их отдельно не доставать
 
Сверху