Значит есть ответ от HTTP-сервера ответ, заголовки+тело. Надо как-то определить что тело ответа имеет текстовый формат(html, json, xml - в общем любой текст), а не двоичные данные, картинки и т.п. Сначала хотел просто проверять поле Content-Type на наличие подстроки "text" или даже "charset", но например application/json и application/xhtml+xml тоже имеют текстовый формат. Так как быть то?
Ну так составь MIME-Types список текстовых форматов и сверяй, как вариант проверяй на вхождения непечатных символов(кроме символов табуляции, перевода строки и тп), конечно тут придется еще с кодировками разобраться.
Думал над этим, но это геморно из-за того что их слишком много, и отсутствия четкой стандартизации(для одного json'a только 4 типа записи) было бы довольно просто если бы я знал что используется ASCII, но это все портит Вопрос можно обобщить: есть буфер/массив байтов/поток данных/etc как распознать что там хранится текст, хотя бы для самых распространенных кодировок
В общем остановился на след. алгоритме: сначала проверяю как писал выше на text потом на самые распространенные Content-Type (отберу штук 10-15) если результата нет, то проверяю первые N байтов. Если процент вхождений байтов таких что (b < 32 && b != 0 && b != 9 && b != 10 && b != 13) выше 8-10 то скорее всего это не текст. (проверял на множестве файлов как правило от 10% и выше) т.е. тут нормальное статистическое распределение, что и подтвердилось экспериментами Если будут еще мысли то welcome
GhostOnline, ну вообще в конфиге апача(или PHP) записано большая часть MIME типов, половина закомментированна, вот от туда можно взять список.