Accueil / Blog / Métier / Archives / Code snippet: human readable to machine name

Code snippet: human readable to machine name

Par Pierre Rineau publié 07/05/2010, édité le 11/05/2015

This PHP code snippet compute nice machine name (i.e. with only alpha numerical characters, keeping inside hyphens) from a formated human readable name.

Useful for some automatic machine name identifiers computing from human readable arbitrary titles, I use it sometime in Drupal modules.

<?php
/**
* Helper that generates a machine name using a provided human readable name.
*
* @param string $human_name
*   Human readable name.
*
* @return string
*   Machine name cleaned-up of any special chars.
*/
function human_to_machine($human_name) {
  return
strtolower(preg_replace(array(
   
'/[^a-zA-Z0-9]+/',
   
'/-+/',
   
'/^-+/',
   
'/-+$/',
  ), array(
'-', '-', '', ''), $human_name));
}
?>

This is not fail-safe but it will work in most cases (if you give a string without any human readable chars you will get an empty string or a string only with one hypen).

This is also a nice sample of preg_replace() usage.

ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
10 modules Drupal que vous n'utilisez (peut-être) pas assez 10 modules Drupal que vous n'utilisez (peut-être) pas assez 10/12/2014

Dans l'équipe Drupal de Makina Corpus, nous avons l'opportunité de travailler sur de nombreux ...

Gérer ses dépendances Drupal 7 avec Composer Gérer ses dépendances Drupal 7 avec Composer 08/12/2016

Drupal.org distribue maintenant les modules et thèmes dans son propre dépôt Packagist, voyons ...

Utiliser Migrate en Drupal 8 Utiliser Migrate en Drupal 8 20/12/2016

Trucs, astuces et points d'attention pour l'import de données avec Migrate en Drupal 8.

Utiliser des bundles Symfony dans Drupal 7 Utiliser des bundles Symfony dans Drupal 7 19/12/2016

Notre module Drupal Symfony DIC permet d'apporter la puissance de Symfony, dans Drupal, ...

Utiliser le DIC de Symfony dans Drupal 7 Utiliser le DIC de Symfony dans Drupal 7 14/12/2016

Afin de préparer la compatibilité vers Drupal 8, il est possible de créer des composants avec le ...