Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2017, 15:07   #11
YARK0S
Пользователь
 
Регистрация: 12.05.2017
Сообщений: 30
По умолчанию

Результат
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ну дык возьмите значение нужного заголовка и делайте с ним что надо.
1. Или нужно просто обращаться к этому массиву, и по номеру брать что нужно?
2. Но правильней мне кажеться нужно поменять этот код
Код:
if( !function_exists( 'http_parse_headers' ) ) {
    function http_parse_headers( $text )
    {
        $retVal = array();
        $fields = explode("\r\n", preg_replace('/\x0D\x0A[\x09\x20]+/', ' ', $text));
        foreach( $fields as $field ) {
            if( preg_match('/([^:]+): (.+)/m', $field, $match) ) {
                $match[1] = preg_replace('/(?<=^|[\x09\x20\x2D])./e', 'strtoupper("\0")', strtolower(trim($match[1])));
                if( isset($retVal[$match[1]]) ) {
                    $retVal[$match[1]] = array($retVal[$match[1]], $match[2]);
                } else {
                    $retVal[$match[1]] = trim($match[2]);
                }
            }
        }
        return $retVal;
    }
}
Что бы он заганял только нужные мне заголовки?
3. Как то всё же можно обратиться к заголовку чтобы его вывести
Код:
$headers = "content-type: text/html; charset=UTF-8\r\n".
  "Server: Funky/1.0\r\n".
  "Set-Cookie: foo=bar\r\n".
  "Set-Cookie: baz=quux\r\n".
  "Folded: works\r\n\ttoo\r\n";
print_r(http_parse_headers($headers));
YARK0S вне форума Ответить с цитированием
Старый 10.07.2017, 15:17   #12
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Должен получится массив, где ключи это имена заголовков.
Код:
$headers['Date']
Может данные в немного неподходящем виде, там \r\n или \n?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.07.2017, 15:20   #13
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

А чем не устраивает та же get_headers?
Andkorol вне форума Ответить с цитированием
Старый 10.07.2017, 15:32   #14
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

У автора ж не HTTP.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.07.2017, 15:46   #15
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

А, точно.
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ну тогда с этой же страницы можно попробовать код из следующего комментария.
Работает вроде норм:
PHP код:
if (!function_exists('http_parse_headers')) {
    function 
http_parse_headers($raw_headers) {
        
$headers = array();
        
$key '';

        foreach(
explode("\n"$raw_headers) as $i => $h) {
            
$h explode(':'$h2);

            if (isset(
$h[1])) {
                if (!isset(
$headers[$h[0]]))
                    
$headers[$h[0]] = trim($h[1]);
                elseif (
is_array($headers[$h[0]])) {
                    
$headers[$h[0]] = array_merge($headers[$h[0]], array(trim($h[1])));
                }
                else {
                    
$headers[$h[0]] = array_merge(array($headers[$h[0]]), array(trim($h[1])));
                }

                
$key $h[0];
            }
            else { 
                if (
substr($h[0], 01) == "\t")
                    
$headers[$key] .= "\r\n\t".trim($h[0]);
                elseif (!
$key
                    
$headers[0] = trim($h[0]); 
            }
        }

        return 
$headers;
    }
}

$headers "content-type: text/html; charset=UTF-8\r\n".
  
"Server: Funky/1.0\r\n".
  
"Set-Cookie: foo=bar\r\n".
  
"Set-Cookie: baz=quux\r\n".
  
"Folded: works\r\n\ttoo\r\n";

var_dump(http_parse_headers($headers)); 
Результат:
PHP код:
array (size=4)
  
'content-type' => string 'text/html; charset=UTF-8' (length=24)
  
'Server' => string 'Funky/1.0' (length=9)
  
'Set-Cookie' => 
    array (
size=2)
      
=> string 'foo=bar' (length=7)
      
=> string 'baz=quux' (length=8)
  
'Folded' => string 'works
    too' 
(length=11
Andkorol вне форума Ответить с цитированием
Старый 10.07.2017, 15:55   #16
YARK0S
Пользователь
 
Регистрация: 12.05.2017
Сообщений: 30
По умолчанию

Это всё очень круто, ну и последний момент, как вывести любой заголовок от туда, вместе со значением?

Последний раз редактировалось Alex11223; 10.07.2017 в 16:01.
YARK0S вне форума Ответить с цитированием
Старый 10.07.2017, 16:17   #17
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

http://php.net/manual/ru/language.types.array.php
Andkorol вне форума Ответить с цитированием
Старый 10.07.2017, 17:04   #18
YARK0S
Пользователь
 
Регистрация: 12.05.2017
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
var_dump(http_parse_headers($header )); // выводим весь массив

Код:
Но обратится всё равно не получается:
var_dump(http_parse_headers($header['Delivery-date'])); ---- не работает
var_dump(http_parse_headers($header['Received']['0'])); ---- не работает
var_dump(http_parse_headers($header[0])); // первый символ всего текста выводит
var_dump(http_parse_headers($header['1'])); // второй симфол
К ключу не могу обратится.
Изображения
Тип файла: jpg 3.JPG (68.1 Кб, 53 просмотров)
YARK0S вне форума Ответить с цитированием
Старый 10.07.2017, 17:11   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте:

Код:
$headarr=http_parse_headers($header );
var_dump($headarr['Delivery-date']);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.07.2017, 17:11   #20
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

http://php.net/manual/ru/functions.returning-values.php
http://php.net/manual/ru/language.variables.basics.php
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[С++ Билдер]: Подсчитать общее количество предложений в заданном тексте. Леха Нек Помощь студентам 1 05.12.2016 22:08
Определение количества слов и предложений в тексте в C# AlexQQ Помощь студентам 1 08.05.2013 17:14
Статистика предложений в тексте Nik!ta Общие вопросы Delphi 1 09.05.2012 17:14
Поиск предложений (C#) Dimfn Помощь студентам 0 30.05.2010 16:21
Количество предложений в тексте Noxil Паскаль, Turbo Pascal, PascalABC.NET 7 25.12.2008 17:55