Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. <?php
  2.  
  3. /***
  4. * 2017-09-17
  5. */
  6.  
  7. function pluralize( $name ){
  8.  
  9. $irregular = array(
  10. 'abdomen' => 'abdomens',
  11. 'alemão' => 'alemães',
  12. 'artesã' => 'artesãos',
  13. 'ás' => 'áses',
  14. 'bencão' => 'bencãos',
  15. 'cão' => 'cães',
  16. 'campus' => 'campi',
  17. 'capelão' => 'capelães',
  18. 'capitão' => 'capitães',
  19. 'chão' => 'chãos',
  20. 'charlatão' => 'charlatães',
  21. 'cidadão' => 'cidadãos',
  22. 'consul' => 'consules',
  23. 'cristão' => 'cristãos',
  24. 'difícil' => 'difíceis',
  25. 'email' => 'emails',
  26. 'escrivão' => 'escrivães',
  27. 'fóssil' => 'fósseis',
  28. 'germen' => 'germens',
  29. 'grão' => 'grãos',
  30. 'hífen' => 'hífens',
  31. 'irmão' => 'irmãos',
  32. 'liquens' => 'liquen',
  33. 'mal' => 'males',
  34. 'mão' => 'mãos',
  35. 'orfão' => 'orfãos',
  36. 'país' => 'países',
  37. 'pai' => 'pais',
  38. 'pão' => 'pães',
  39. 'projétil' => 'projéteis',
  40. 'réptil' => 'répteis',
  41. 'sacristão' => 'sacristães',
  42. 'sotão' => 'sotãos',
  43. 'tabelião' => 'tabeliães',
  44. 'gás' => 'gases',
  45. 'álcool' => 'álcoois'
  46. );
  47.  
  48. if( isset( $irregular[ $name ] ) ){
  49. return $irregular[ $name ];
  50. }
  51.  
  52.  
  53. // não aplicaveis
  54. $not_applicable = explode( ' ', 'atlas lapis onibus pires virus status' );
  55.  
  56. if( in_array( $name, $not_applicable ) ){
  57. return $name;
  58. }
  59.  
  60.  
  61. // already plural
  62. if( substr( $name, -1 ) == 's' ){
  63. return $name;
  64. }
  65.  
  66. // default plural
  67. $plural = array(
  68. '/^(.*)ão$/i' => '\1ões',
  69. '/^(.*)(r|s|z)$/i' => '\1\2es',
  70. '/^(.*)(a|e|o|u)l$/i' => '\1\2is',
  71. '/^(.*)il$/i' =>'\1\2is',
  72. '/^(.*)(m|n)$/i' => '\1ns',
  73. '/^(.*)$/i' => '\1s',
  74. );
  75. foreach( $plural as $reg => $rep ){
  76. if( preg_match( $reg, $name ) ){
  77. $name = preg_replace( $reg, $rep, $name );
  78. break;
  79. }
  80. }
  81.  
  82. return $name;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement