我的以下功能清理上传的文件:
public static function slugify($string) {
$string = transliterator_transliterate("Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();", $string);
$string = preg_replace('/[-\s]+/', '-', $string);
return trim($string, '-');
}
我在这里[:Punctuation:]
删除了插件。问题是我想在我的文件名中保留点(。),因为当我删除它时,slugify将1.zip
变为1zip
。有没有办法保持点这个功能?
答案 0 :(得分:0)
您需要提供已接受字符的列表。这样:
$trans = Transliterator::create( "Latin; NFKD; [^\u0041-\u007A\u0020\u0027\u002D\002E] Remove; NFC" );
将删除除拉丁字母字符和[' - 。]
之外的所有内容您可能需要调整到您的需求。您需要使用的代码是UTF-16。例如'0x002E'是'。'