Лучший метод шифрования / кодирования 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);
}
Другие вопросы по тегам