Собрал регулярное выражение [\\\]+[nfvabrt0]{1}
для замены некоторых символов (\n
, \t
, \0
и т.д.) функцией preg_replace() тут. Вроде работает, но скрипт при вводе "С:\Program Files"
возвращает "С:Pogm Files"
при вводе "127.0.0.1"
возвращает "127...1"
.
Пробовал разные флаги результат тот же.
Подскажите ошибку.
Каждый из управляющих символов (\n
, \t
, ...) - это один целый символ (не два). Ведущий слэш - способ записи такого символа, а вовсе не отдельный, самостоятельный символ. Как следствие, отрывать слэш от "буковки" в регулярном выражении нельзя.
Правильное выражение должно иметь вид:
$output = preg_replace("/[\n\f\v\a\b\r\t\0]+/", '', $input);
Чтобы не писать всю эту кучу символов ручками, в PCRE есть символьный класс [:cntrl:]
. Вот как его можно использовать для решения той же самой задачи:
$output = preg_replace("/[[:cntrl:]]+/", '', $input);
О других символьных классах вы можете узнать из официальной документации.
A вот и рабочий пример кода: https://3v4l.org/cjiLI
В стандарте HTTP есть 3 составляющие: стартовая строка, заголовки и тело
Сразу извиняюсь если некорректно назвал топик, но интересует такая тема:
С помощью curl получаю данные со стороннего сайта, изначально его кодировка не известнаВ случае если кодировка windows-1251 получаю не читаемый...