Лучший метод шифрования / кодирования PHP для использования вывода в качестве имени папки
У меня есть текст менее 18 символов. Я хочу создать каталог, используя этот текст в качестве имени каталога. Когда-нибудь текст будет иметь специальные символы, такие как, é, í, í, ó, ú, ü, ñ, ¿, ¡,? так что его нельзя использовать как имя каталога
Итак, я думаю, что лучше зашифровать или закодировать тест, чтобы его можно было использовать, используя имя папки
Какой метод шифрования / кодирования является лучшим для моего приобретения?
заранее спасибо
2 ответа
Я думаю, что вы можете использовать base64 кодировку, если вы хотите восстановить исходное имя папки:
base64_encode('Folder Name'); // results: Rm9sZGVyIE5hbWU=
Если вы не хотите вернуть оригинальное имя, вы можете просто использовать MD5:
md5('Folder Name'); // results: d89dbf99916d31a7870474d44d481ffa
Если вы хотите использовать хеш, просто перейдите к md5()
поскольку он очень быстрый, и вам не нужно ничего криптографически сильного.
Или вы можете легко очистить строку, вот мой метод:
/**
* Sanitizes a filename, replacing whitespace with dashes and transforming the string to lowercase.
*
* Removes special characters that are illegal in filenames on certain operating systems and special characters
* requiring special escaping to manipulate at the command line. Replaces spaces and consecutive dashes with a single
* dash. Trims period, dash und underscore from beginning and end of filename.
*
* @param string $filename
* The filename to be sanitized.
* @return string
* The sanitized filename.
* @throws \InvalidArgumentException
* If <var>$filename</var> is invalid.
*/
final public static function sanitizeFilename($filename) {
if (empty($filename)) {
throw new \InvalidArgumentException("A file's name cannot be empty.");
}
// Remove characters which aren't allowed in filenames.
$filename = str_replace([ "?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", '"', "&", "$", "#", "*", "(", ")", "|", "~" ], "", $filename);
// Replace whitespace characters with dashes.
$filename = preg_replace("/[\s-]+/", "-", $filename);
// Remove characters which aren't allowed at the beginning and end of a filename.
$filename = trim($filename, ".-_");
// Always lowercase all filenames for better compatibility.
return mb_strtolower($filename);
}