Я делаю простую контактную форму для сайта и столкнулся с небольшой проблемой - при отправке почты через PHPmailer я могу передавать HTML-теги, фигурные скобки и другие специальные символы в моей форме, что, вероятно, не очень хорошая идея ...
Проблема в том, что мне нужно оставить пробелы и польские символы ( ąćęłńóśźż ), а я Абсолютный новичок в регулярных выражениях и php.
Я прибег к использованию preg_replace
, делая в основном это:
function clean($string) {
return preg_replace('/[^A-Za-z0-9\-]/', '', $string);
}
Как и следовало ожидать, это оставляет меня с таким видом мусора:
До preg_replace : https://imgur.com/a/DrJVBNT
После preg_replace : https://imgur.com/a/Q1xIhWI
Вся помощь приветствуется!
Проблема решена: Резюме
Закончено предложением Альваро Гонсалеса об использовании компонента zendEscaper для экранирования тегов HTML,Делайте это, делая это
$inputFieldName = $escaper->escapeHtml($_POST['inputFieldName']);
каждый раз, когда мне нужно убедиться, что HTML не может быть использован, где inputFieldName
- ваш <input name="">
атрибут.
Если по какой-то другой причине вам действительно нужно сделать то, что я просил сделать в первую очередь, то есть полностью удалить некоторые символы, но оставить английские и польские буквы, цифры и пробелы, тогда ответ Toto соответствует вашим потребностям:
function clean($string) {
return preg_replace('/[^A-Za-z0-9ąćęłńóśźżĄĆĘŁŃÓŚŹŻ\s-]/u', '', $string);
}
Еще раз спасибо всем за помощь!