Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
8 / 8
CRAP
100.00% covered (success)
100.00%
22 / 22
Str
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
8 / 8
11
100.00% covered (success)
100.00%
22 / 22
 toUrl
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
6 / 6
 length
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 lower
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 upper
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 lowerCamel
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 camel
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 truncate
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
8 / 8
 strip
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
<?php
namespace Win\Utils;
/**
 * Utilitário de Strings
 */
abstract class Str
{
    const TRUNCATE_BEFORE = 0;
    const TRUNCATE_AFTER = 1;
    /**
     * @param string $string
     * @return string
     */
    public static function toUrl($string)
    {
        $url = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
        $url = preg_replace("/[^a-zA-Z0-9\/_| -]/", '', $url);
        $url = ltrim(strtolower(preg_replace('/[A-Z]([A-Z](?![a-z]))*/', '_$0', $url)), '_');
        $url = preg_replace("/[\/_| -]+/", '-', $url);
        $url = strtolower(trim($url, '-'));
        return $url;
    }
    /**
     * @param string $string
     * @return int
     */
    public static function length($string)
    {
        return mb_strlen($string);
    }
    /**
     * @param string $string
     * @return string
     */
    public static function lower($string)
    {
        return mb_strtolower($string);
    }
    /**
     * @param string $string
     * @return string
     */
    public static function upper($string)
    {
        return mb_strtoupper($string);
    }
    /**
     * @param string $string
     * @return string
     */
    public static function lowerCamel($string)
    {
        preg_match('/^_*/', $string, $begin);
        return $begin[0] . lcfirst(static::camel($string));
    }
    /**
     * @param string $string
     * @return string
     */
    public static function camel($string)
    {
        $string = ucwords(mb_strtolower(trim(str_replace(['-', '_'], ' ', $string))));
        return preg_replace('/[^a-zA-Z0-9]/', '', $string);
    }
    /**
     * Retorna a string resumida, sem cortar a última palavra
     * @param string $string
     * @param int $limit tamanho máximo
     * @param int $mode TRUNCATE_BEFORE | TRUNCATE_AFTER
     * @return string
     */
    public static function truncate($string, $limit, $mode = self::TRUNCATE_BEFORE)
    {
        $string = strip_tags($string);
        if (mb_strlen($string) <= $limit) {
            return $string;
        }
        if ($mode === static::TRUNCATE_BEFORE) {
            $limit = mb_strrpos(mb_substr($string, 0, $limit + 1), ' ');
        } elseif ($mode === static::TRUNCATE_AFTER) {
            $limit = mb_strpos(mb_substr($string, $limit), ' ') + $limit;
        }
        return rtrim(mb_substr($string, 0, $limit), ' ,.!?') . '...';
    }
    /**
     * Limpa a string, retirando espaços e tags html
     * @param string $string
     * @return string
     */
    public static function strip($string)
    {
        return trim(strip_tags($string));
    }
}