php - 通过 PHPmailer 发送邮件时如何在保留波兰字符的同时转义特殊字符?
问题描述
我正在为一个网站制作一个简单的联系表格,但遇到了一个小问题 - 通过 PHPmailer 发送邮件时,我可以在我的表格中传递 HTML 标签、花括号和其他特殊字符,这可能不是真的一个好主意...
问题是 - 我需要保留空格和波兰语字符(ąćęłńóśźż),而且我是正则表达式和 php.ini 的绝对新手。
我基本上使用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
感谢所有帮助!
解决的问题:总结
最终遵循Álvaro González 的建议,即使用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);
}
再次感谢大家的帮助!
解决方案
只需在字符类中添加空格和波兰字符:
function clean($string) {
return preg_replace('/[^A-Za-z0-9ąćęłńóśźż\s-]/u', '', $string);
}
/u
标志对于处理 unicode 字符是强制性的。
推荐阅读
- c++ - 如何在编译时包含本地编译的 C++ 库?
- sql - SQL 日期为 bigint
- linux - 如何在bash中将结果转换为整数
- python - 绘制具有不同参数的积分解
- reactjs - React js 和 Redux:对象作为 React 子级无效
- spring - @Order Spring 中的奇怪 +99
- reactjs - 组件未在反应中定义
- c++ - VS Code 无法在“问题”选项卡中打开文件,因为路径构造错误
- php - 在 Windows 10 上运行的 WAMPServer 可以处理高流量吗?
- kubernetes - Kubernetes 在 LXC 和 Ingress 上的迷人分布