我正在尝试提出一个功能,该功能可以很好地清理某些字符串,以使它们可以安全地在URL中使用(如post slug),也可以安全地用作文件名。例如,当有人上传文件时,我要确保我从名称中删除所有危险字符。
到目前为止,我已经提出了以下功能,希望该功能可以解决此问题,并允许外来UTF-8数据。
/**
* 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允许一些其他字符,例如temp vim文件
更新:删除了星号,因为我无法想到有效的用法
小怪兽爱吃肉