示例#1
0
 /**
  * Clean a string
  *
  * @static
  * @param string	$str string to clean
  * @param boolean	$deep If true replace '.' too
  * @param boolean	$negative If true replace - with _
  * @return string
  */
 public static function unspace($str, $deep = false, $negative = false)
 {
     $str = trim($str);
     $str = X4Utils_helper::to7bit($str, 'UTF-8');
     $str = strtolower(html_entity_decode($str));
     if (function_exists('preg_replace_callback')) {
         // strip special chars
         $str = preg_replace_callback('/[àèéìòùç]+/is', function ($m) {
             $r = '';
             switch ($m[0]) {
                 case 'à':
                     $r = 'a';
                     break;
                 case 'è':
                 case 'é':
                     $r = 'e';
                     break;
                 case 'ì':
                     $r = 'i';
                     break;
                 case 'ò':
                     $r = 'o';
                     break;
                 case 'ù':
                     $r = 'u';
                     break;
                 case 'ç':
                     $r = 'c';
                     break;
             }
             return $r;
         }, $str);
         // clean
         $regex = $deep ? '/[^a-z0-9-]+/is' : '/[^a-z0-9-\\/\\.]+/is';
         $res = preg_replace_callback($regex, function ($m) {
             return '-';
         }, $str);
         // remove duplicates
         $res = preg_replace_callback('/-(-*)/', function ($m) {
             return '-';
         }, $res);
     } else {
         $str = preg_replace('/[àèéìòùç]+/e', '-', $str);
         // clean
         $res = $deep ? preg_replace('/[^a-z0-9-\\.]+/', '-', $str) : preg_replace('/[^a-z0-9-\\/\\.]+/', '-', $str);
         // remove duplicates
         $res = preg_replace('/-(-*)/', '-', $res);
     }
     return $negative ? str_replace('-', '_', $res) : $res;
 }