首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对字符串进行消毒,使其URL和文件名安全?

对字符串进行消毒,使其URL和文件名安全?
EN

Stack Overflow用户
提问于 2010-04-19 23:51:45
回答 23查看 189.8K关注 0票数 138

我正在尝试想出一个函数,它可以很好地清理某些字符串,这样它们就可以安全地在URL中使用(就像post slug一样),也可以安全地用作文件名。例如,当有人上传文件时,我希望确保删除名称中的所有危险字符。

到目前为止,我已经想出了下面的函数,我希望它能解决这个问题,并允许国外的UTF-8数据。

代码语言:javascript
复制
/**
 * Convert a string to the file/URL safe "slug" form
 *
 * @param string $string the string to clean
 * @param bool $is_filename TRUE will allow additional filename characters
 * @return string
 */
function sanitize($string = '', $is_filename = FALSE)
{
 // Replace all weird characters with dashes
 $string = preg_replace('/[^\w\-'. ($is_filename ? '~_\.' : ''). ']+/u', '-', $string);

 // Only allow one dash separator at a time (and make string lowercase)
 return mb_strtolower(preg_replace('/--+/u', '-', $string), 'UTF-8');
}

有没有人有什么棘手的样本数据可以用来对比一下--或者有没有更好的方法来保护我们的应用程序不受坏名声的影响?

$is-filename允许一些额外的字符,如临时vim文件

更新:删除了星号,因为我想不出一个有效的用法

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2668854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档