«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2020/09/05 11:09:39  №1797982 1
Аноны, я чет с регулряками затупил. В целях любопытства я заморочился парсингом POST запроса от формы.
Таким вот уебищным образом:
https://regex101.com/r/56d4nh/4/

Два вопроса:
1. Когда парсишь сегмент:

Content-Disposition: form-data; name="file"; filename="test.jpg"
Content-Type: image/jpeg

тут данные. hex картинки, или строка base64

то в самом начеле есть символы
\\r\\n - исмволы возврата каретки и переноса строки
но в регулярке моей ищет успешно только когда установлен символ \\n
-переноса строки. Если добавить возврат каретки - не ище.

Там суть такая что заголовки отдельного блока в данных формы отделены от собственно данных такой последовательностью - "\r\n\r\n"

А перед заголовками только "\r\n". Соответственно я хочу получить заголовки и разобрать их уже по значениям.


2. Почему у меня в квадратных скобках символ точки "." ничего не ищет?
Ответы: >>1798094
Аноним 2020/09/05 14:06:02  №1798094 2
>>1797982

По поводу \r\n vs \n - это может быть особенность regex101, что там перенос строки кодируется как \n и \r там нету. А вот в реальном запросе от браузера присутствует \r\n.

Ты можешь писать \r?\n, который должен работать и там и там.

> Почему у меня в квадратных скобках символ точки "." ничего не ищет?

Внутри квадратных скобок символ точки ищет знак точки, а не "любой символ".

Твоя регулярка не очень удачная, так как внутри заголовка могут быть различные символы, не только те, что указаны у тебя. Я бы советовал искать так:

- отрезаем от запроса первый набор заголовков (заканчивается \r\n\r\n)
- разбираем их на строки
- выделяем там значение boundary в заголовке Content-Type
- разбиваем остаток запроса на части по строке boundary
- каждую часть разбиваем на заголовки и тело по \r\n\r\n
- заголовки разбираем на строки

Вид POST-запроса с boundary можно посмотреть к примеру тут: https://habr.com/ru/post/511114/