我有一个用户可以上传文件的表单,我想将该文件命名为[id]_[lastname]_[firstname].pdf
。该名称是由用户输入的,我担心他们输入的内容中带有斜杠。否则,类似的事情$path = $dir.$filename
可能会导致$path = 'uploads/2_smith_john/hahaimajerk.pdf'
如果名字是john/hahaimajerk
.
我真的不想强迫用户将他们的名字限制为任何内容;我不介意在文件名中稍微改变一下他们的名字,只要我能说出原来的名字。我需要转义哪些字符,或者有其他方法可以做到这一点?或者...我只是使用mysql_real_escape_string
?
我通常为此使用正则表达式。我不想删除某些特定字符(如斜杠、点等),而是只允许某些字符(如字母数字)
例如,这将用下划线替换任何非字母、数字、破折号或下划线的字符:
$escaped = preg_replace('/[^A-Za-z0-9_\-]/', '_', $raw);
破折号之前的反斜杠用于转义正则表达式中的破折号,因为破折号通常用于指定字符范围(例如 A-Z)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)