В целях тестирования я хотел бы построить простой HTTP-сервер на PHP.
Я знаю, что заголовки HTTP завершаются символом \ r \ n на пустой строке, и я хотел бы обнаружить этот шаблон, чтобы знать, когда мой сервер получил все заголовки и может ответить клиенту.
Даже если я симулирую клиента так:
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "Sending HTTP HEAD request...";
socket_write($socket, $in, strlen($in));
Я не могу определить конец заголовков. Должна быть проблема в моей логике мышления. Вот мой код, который пытается обнаружить шаблон:
do {
// read client input
$input = socket_read($spawn, 1024, 1) or die("Could not read input\n");
if (preg_match ("/^[\r\n|\r|\n]/", $input)) {
echo "CRLF detected!!\n";
} else {
if (trim($input) != "") {
echo "NO CRLF in: ".trim($input)."\n";
}
}
} while (true);
Я также пробовал:
if ($input == "\r\n"){
или
if (preg_match ("/[\r\n|\r|\n]{2,}/", $input))
и множество других различных комбинаций, но ни одна из опций не обнаруживает \ r \ n, который указывает конец заголовков.
Любая помощь очень ценится.