PageRenderTime 25ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/ieducar/lib/Portabilis/String/Utils.php

https://github.com/ieducar/ieducar
PHP | 167 lines | 52 code | 29 blank | 86 comment | 3 complexity | 6cced3ccfa41c6a40a64ff705e8396d3 MD5 | raw file
Possible License(s): MIT, Apache-2.0
  1. <?php
  2. /**
  3. * i-Educar - Sistema de gestão escolar
  4. *
  5. * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  6. * <ctima@itajai.sc.gov.br>
  7. *
  8. * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  9. * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  10. * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  11. * qualquer versão posterior.
  12. *
  13. * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  14. * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  15. * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  16. * do GNU para mais detalhes.
  17. *
  18. * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  19. * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  20. * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  21. *
  22. * @author Lucas D'Avila <lucasdavila@portabilis.com.br>
  23. * @category i-Educar
  24. * @license @@license@@
  25. * @package Portabilis
  26. * @since Arquivo disponível desde a versão 1.1.0
  27. * @version $Id$
  28. */
  29. require_once 'lib/Portabilis/Array/Utils.php';
  30. /**
  31. * Portabilis_String_Utils class.
  32. *
  33. * @author Lucas D'Avila <lucasdavila@portabilis.com.br>
  34. * @category i-Educar
  35. * @license @@license@@
  36. * @package Portabilis
  37. * @since Classe disponível desde a versão 1.1.0
  38. * @version @@package_version@@
  39. */
  40. class Portabilis_String_Utils {
  41. // wrapper for Portabilis_Array_Utils::merge
  42. protected static function mergeOptions($options, $defaultOptions) {
  43. return Portabilis_Array_Utils::merge($options, $defaultOptions);
  44. }
  45. /* splits a string in a array, eg:
  46. $divisors = array('-', ' '); // or $divisors = '-';
  47. $options = array('limit' => 2, 'trim' => true);
  48. Portabilis_String_Utils::split($divisors, '123 - Some value', $options);
  49. => array([0] => '123', [1] => 'Some value');
  50. */
  51. public static function split($divisors, $string, $options = array()) {
  52. $result = array($string);
  53. $defaultOptions = array('limit' => -1, 'trim' => true);
  54. $options = self::mergeOptions($options, $defaultOptions);
  55. if (! is_array($divisors))
  56. $divisors = array($divisors);
  57. foreach ($divisors as $divisor) {
  58. if (is_numeric(strpos($string, $divisor))) {
  59. $result = split($divisor, $string, $options['limit']);
  60. break;
  61. }
  62. }
  63. if ($options['trim'])
  64. $result = Portabilis_Array_Utils::trim($result);
  65. return $result;
  66. }
  67. /* scapes a string, adding backslashes before characters that need to be quoted,
  68. this method is useful to scape values to be inserted via database queries. */
  69. public static function escape($str) {
  70. return addslashes($str);
  71. }
  72. /* encodes latin1 strings to utf-8,
  73. this method is useful to return latin1 strings (with accents) stored in db, in json api's.
  74. */
  75. public static function toUtf8($str, $options = array()) {
  76. // $defaultOptions = array('transform' => false, 'escape' => false, 'convert_html_special_chars' => false);
  77. // $options = self::mergeOptions($options, $defaultOptions);
  78. //
  79. // if ($options['escape'])
  80. // $str = self::escape($str);
  81. //
  82. // if ($options['transform'])
  83. // $str = ucwords(mb_strtolower($str));
  84. //
  85. //
  86. // $str = utf8_encode($str);
  87. //
  88. // if ($options['convert_html_special_chars'])
  89. // $str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
  90. return $str;
  91. }
  92. /* encodes utf-8 strings to latin1,
  93. this method is useful to store utf-8 string (with accents) get from json api's, in latin1 db's.
  94. */
  95. public static function toLatin1($str, $options = array()) {
  96. // $defaultOptions = array('transform' => false, 'escape' => true, 'convert_html_special_chars' => false);
  97. // $options = self::mergeOptions($options, $defaultOptions);
  98. //
  99. // if ($options['escape'])
  100. // $str = self::escape($str);
  101. //
  102. // if ($options['transform'])
  103. // $str = ucwords(mb_strtolower($str));
  104. //
  105. //
  106. // // apenas converte para latin1, strings utf-8
  107. // // impedindo assim, converter para latin1 strings que já sejam latin1
  108. //
  109. // if (Portabilis_String_Utils::encoding($str) == 'UTF-8')
  110. // $str = utf8_decode($str);
  111. //
  112. // if ($options['convert_html_special_chars'])
  113. // $str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
  114. return $str;
  115. }
  116. public static function unaccent($str) {
  117. $fromEncoding = Portabilis_String_Utils::encoding($str);
  118. return iconv($fromEncoding, 'US-ASCII//TRANSLIT', $str);
  119. }
  120. public static function encoding($str) {
  121. return mb_detect_encoding($str, 'UTF-8, ISO-8859-1', $strict = true);
  122. }
  123. public static function camelize($str) {
  124. return str_replace(' ', '', ucwords(str_replace('_', ' ', $str)));
  125. }
  126. public static function underscore($str) {
  127. $words = preg_split('/(?=[A-Z])/', $str, -1, PREG_SPLIT_NO_EMPTY);
  128. return strtolower(implode('_', $words));
  129. }
  130. public static function humanize($str) {
  131. $robotWords = array('_id', 'ref_cod_', 'ref_ref_cod_');
  132. foreach ($robotWords as $word)
  133. $str = str_replace($word, '', $str);
  134. return str_replace('_', ' ', ucwords($str));
  135. }
  136. }