How to generate a machine name in Drupal 8

use Drupal\Core\Language\LanguageInterface;

/**
 * Generates a machine name from a string.
 *
 * This is basically the same as what is done in
 * \Drupal\Core\Block\BlockBase::getMachineNameSuggestion() and
 * \Drupal\system\MachineNameController::transliterate(), but it seems
 * that so far there is no common service for handling this.
 *
 * @param string $string
 *
 * @return string
 *
 * @see \Drupal\Core\Block\BlockBase::getMachineNameSuggestion()
 * @see \Drupal\system\MachineNameController::transliterate()
 */
protected function getMachineName($string) {
  $transliterated = \Drupal::transliteration()->transliterate($string, LanguageInterface::LANGCODE_DEFAULT, '_');
  $transliterated = mb_strtolower($transliterated);

  $transliterated = preg_replace('@[^a-z0-9_.]+@', '_', $transliterated);

  return $transliterated;
}