我正在尝试提出一个函数,做一个很好的工作,消毒某些字符串,使他们是安全的使用在网址(像一个职位蛞蝓) ,也安全地使用作为文件名。例如,当有人上传文件时,我希望确保从名称中删除所有危险字符。
到目前为止,我已经提出了以下函数,我希望解决这个问题,并允许外国 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 文件
更新: 删除星号字符,因为我想不出一个有效的使用