Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 17

Немного переделать функцию

11.07.2017, 10:44. Показов 834. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обе функции работают, эта то что мне нужно:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
if (!function_exists('http_parse_headers')) {
    function http_parse_headers($text) {
        $headers = array();
        $key = '';
 
        foreach(explode("\n", $text) as $i => $h) {
            $h = explode(':', $h, 2);
 
            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], 0, 1) == "\t")
                    $headers[$key] .= "\r\n\t".trim($h[0]);
                elseif (!$key)
                    $headers[0] = trim($h[0]);
            }
        }
 
        return $headers;
    }
}
Но у неё маленький баг, например есть строка 787 символов, но в масив попадает не вся, где то например 87 символов, а нужно всю заполучить.

Вторая чужая функция:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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;
    }
}
Она заполучает всю строку с 787 символов, и это то что нужно, но не могу разобрать код, нужно как в перврй функции чтобы я мог обращаться по ключам в масив, чтобы мог вывести любой заголовок.
Вот скрины:
Миниатюры
Немного переделать функцию   Немного переделать функцию  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.07.2017, 10:44
Ответы с готовыми решениями:

Как немного оптимизировать функцию?
Здравствуйте всем! Сейчас писал этот функцию для проекта но немного он не оптимизирован и работает медленнее... Как можно его немного...

Нужно переделать функцию
Всем привет ! Нужно переделать функцию full_stats , так что-бы вместо $answ1,$answ2,$answ3 ... она использовала аргументы с массива. ...

Переделать функцию из JavaScript в PHP
Мой Дядя программист! Вчера он сделал мне программу для вычисления суммы денег. Ну вы сами поймете вот вам код: function kredit(obg){ ...

2
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 17
11.07.2017, 10:50  [ТС]
Вот к примеру сама строка.
Миниатюры
Немного переделать функцию   Немного переделать функцию  
0
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 17
11.07.2017, 14:16  [ТС]
Кто не понял, что хочу зделать, обращайтесь, поясню.

Добавлено через 37 минут
Получаеться в первой функции, мы подтягиваем только первую строчку, а нужно как во второй подтягивать все строчки, которые пренадлежат этому заголовку.
Сам заголовок:

Content preview: ФПМГШМГИ уц атшщ уцатшц ауцт уцатшуцатцушта
вт фвт уцат щтвтц цута шатуцт уца ытсывта
ывоти ыоаываывибвыи ыва . вы аывга щырщаш
ыщаыа ыв.ва рыщарыщваыаж dshiufhius fhdeheifh ehf eh
adflsff sbf bsjbsfrbuf sbsjdbf herfybsfbdsjbfj dsfewb vfb jsbf dsjjf dsbjbyrbefsbj
gdjf +32549844981219 efewhfg bfyg wfu wfg f few +564798984 ewfjewfhein inwef
iewnfiuewnfewf. аоукашуташкуат ОГшоалмт уктт кптыатшт
тывл а тыат тавылат вшатшатув аи авцауотвылтпавп
пт уатавпвптвштаывт уга выта вытвпа ваптав
атцватукшптав вт птв твуащ ь. [...]

Есть идеи?

Добавлено через 1 час 34 минуты
https://stackoverflow.com/ques... 23#6368623
Может кому то поможет.

Добавлено через 17 минут
Остановился на этом варианте:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function http_parse_headers( $header ) {
    $retVal = array();
    $fields = explode("\r\n", preg_replace('/\x0D\x0A[\x09\x20]+/', ' ', $header));
    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]]) ) {
                if ( is_array( $retVal[$match[1]] ) ) {
                    $i = count($retVal[$match[1]]);
                    $retVal[$match[1]][$i] = $match[2];
                }
                else {
                    $retVal[$match[1]] = array($retVal[$match[1]], $match[2]);
                }
            } else {
                $retVal[$match[1]] = trim($match[2]);
            }
        }
    }
    return $retVal;
}
Заголовки не выводит, только их номер(( Так и обращаюсь по номеру элемента массива... Если кто то придумает как с первого кода сюда заголовки закинуть, был бы очень благодарен. А так пока буду работать с этим.

Добавлено через 52 минуты
Схитрил, зделал вот так:
PHP
1
2
3
4
if ( is_array( $retVal[$match[1]] ) ) {
                    $i = stristr($field,':', true);
                    $retVal[$match[1]][$i] = $match[2];
                }

Задание решено!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.07.2017, 14:16
Помогаю со студенческими работами здесь

Переделать функцию согласно ООП
Здравствуйте. Вопрос скорее всего элементарный и решение очевидно, но мне не удалось самому с этим справиться при помощи гугла и...

Как переделать функцию для корректной работы?
Всем доброе утро! У меня есть код для замени текста: $string = &quot;raptor editor является редактором с открытым исходным кодом javascript...

Нужно немного переделать функцию
Нужно чтобы не переворачивала список и кто может пояснить как она работает а то не совсем понятно (defun remove-eventh (w &amp;optional...

немного переделать
Нужна помощь, срочно! Переделать программу unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes,...

Переделать немного
Доброе время суток. Есть программа которая определяет сумму двух матриц. Нужно переделать то бы она была в динамических данных (указатель...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru