Вам всегда нужно экранировать только символы, которые иначе интерпретируются вашей целевой системой.Для баз данных вы обычно избегаете кавычек, поэтому используете mysql_real_escape_string
или другие.Если ваша цель - html, вы обычно используете htmlspecialchars
, чтобы избавиться от специальных символов html (а именно <
, >
и &
).Если ваша цель - CSV, вам нужно только убедиться, что разрывы строк и разделитель CSV экранированы.
Таким образом, в зависимости от вашей цели вы можете либо повторно использовать существующую функцию escape, определить свою собственную или даже обходиться без нее.один.Если все, что вам нужно сделать, это сбросить данные в одном файле, тогда вам не о чем позаботиться, если you указывает имя файла и этот файл никогда не используется (или не интерпретируется) ничемкроме вашего приложения.
Так что подумайте о том, какие специальные символы требуются вашему целевому формату для работы, и просто избегайте их.Обычно вы можете игнорировать все остальное.
edit:
Если вы хотите использовать ввод в качестве пути к файлу или имени файла, вы можете просто сами решить, насколько вы любезны, и какие символы выхочу поддержать.Простым способом было бы заменить все , кроме латинских символов и цифр (и, возможно, некоторые специальные символы, такие как _
и -
), на что-то еще.Например:
preg_replace( '/[^A-Za-z0-9_-]/', '_', $text );