如何在删除其他标点符号时保持transliterator_transliterate中的DOT(。)?

时间:2014-08-12 04:58:19

标签: php punctuation transliteration

我的以下功能清理上传的文件:

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。有没有办法保持点这个功能?

1 个答案:

答案 0 :(得分:0)

您需要提供已接受字符的列表。这样:

$trans = Transliterator::create( "Latin; NFKD; [^\u0041-\u007A\u0020\u0027\u002D\002E] Remove; NFC" );

将删除除拉丁字母字符和[' - 。]

之外的所有内容

您可能需要调整到您的需求。您需要使用的代码是UTF-16。例如'0x002E'是'。'