/** * 入力をアーカイブ中で妥当な拡張子を除くファイル名に変換します。 * @param string $filenameWithoutExtension 拡張子を除くファイル名。 * @return string 制御文字・空白文字のみで構成されていた場合、ランダムな文字列生成します。 */ public function convertToValidFilenameWithoutExtensionInArchives(string $filenameWithoutExtension) : string { $asciiString = $this->preventWindowsReserved(mb_substr(trim(preg_replace('/[^0-9_a-z]+/u', '-', \Stringy\StaticStringy::dasherize(Transliterator::translateUsingLatinAlphabet(preg_replace('/^\\p{Z}+|\\p{C}+|\\p{Z}+$/u', '', \Normalizer::isNormalized($filenameWithoutExtension) ? $filenameWithoutExtension : \Normalizer::normalize($filenameWithoutExtension))))), '-'), 0, static::MAX_LENGTH)); return $asciiString === '' ? $this->generateRandomFilename() : $asciiString; }
/** * @param string $kanjiAndKanaString * @param string $latinAlphabetString * @dataProvider stringProvider */ public function testTranslateUsingLatinAlphabet(string $kanjiAndKanaString, string $latinAlphabetString) { $this->assertSame($latinAlphabetString, Transliterator::translateUsingLatinAlphabet($kanjiAndKanaString)); }