Вход Регистрация
Файл: tools/string.php
Строк: 189
<?php

class UTIL_String
{
    private static 
$caps = array('A''B''C''D''E''F''G''H''I''J''K''L''M''N''O''P''Q''R''S''T''U''V''W''X''Y''Z');

    
/**
     * Replaces upper case chars in string with delimeter + lowercase chars 
     *
     * @param string $string
     * @param string $divider
     * @return string
     */
    
public static function capsToDelimiter$string$delimiter '_' )
    {
        static 
$delimiters = array();

        if ( !isset(
$delimiters[$delimiter]) )
        {
            
$delimiters[$delimiter]['search'] = array();
            
$delimiters[$delimiter]['replace'] = array();

            foreach ( 
self::$caps as $value )
            {
                
$delimiters[$delimiter]['search'][] = $value;
                
$delimiters[$delimiter]['replace'][] = $delimiter mb_strtolower($value);
            }
        }

        return 
str_replace($delimiters[$delimiter]['search'], $delimiters[$delimiter]['replace'], $string);
    }

    
/**
     * Replaces lowercase case chars + delimiter in string uppercase chars
     *
     * @param unknown_type $string
     * @param unknown_type $delimiter
     * @return unknown
     */
    
public static function delimiterToCaps$string$delimiter '_' )
    {
        
$searchArray = array();
        
$replaceArray = array();

        foreach ( 
self::$caps as $value )
        {
            
$searchArray[] = $delimiter mb_strtolower($value);
            
$searchArray[] = $delimiter $value;

            
$replaceArray[] = $value;
            
$replaceArray[] = $value;
        }

        return 
str_replace($searchArray$replaceArray$string);
    }

    
/**
     * Enter description here...
     *
     * @param array $array
     * @param string $delimiter
     * @param string $left
     * @param string $right
     * @return string
     */
    
public static function arrayToDelimitedString( array $array$delimiter ','$left ''$right '' )
    {
        
$result '';
        foreach ( 
$array as $value )
        {
            
$result .= ( $left $value $right $delimiter);
        }
        
$length mb_strlen($result);
        if ( 
$length )
        {
            
$result mb_substr($result0$length 1);
        }
        return 
$result;
    }

    public static function 
removeFirstAndLastSlashes$string )
    {
        if ( 
mb_substr($string01) === '/' )
        {
            
$string mb_substr($string1);
        }

        if ( 
mb_substr($string, -1) === '/' )
        {
            
$string mb_substr($string0, -1);
        }
        return 
$string;
    }

    
//TODO write description
    
public static function replaceVars$data, array $vars null )
    {
        if ( !isset(
$vars) || count($vars) < )
        {
            return 
$data;
        }

        foreach ( 
$vars as $key => $var )
        {
            
$data preg_replace('/{$(' preg_quote($key) . ')}/i'$var$data);
        }

        return 
$data;
    }

    
/**
     * @deprecated since version 1.7
     * 
     * @param int $length
     * @param int $strength
     * @return string
     */
    
public static function generatePassword$length 8$strength )
    {
        return 
self::getRandomString($length$strength);
    }

    
/**
     * @param int $length
     * @param int $strength
     * @return string
     */
    
public static function getRandomString$length 8$strength )
    {
        list(
$usec$sec) = explode(' 'microtime());
        
$seed = (float) $sec + ((float) $usec 100000);

        
srand($seed);

        
$vowels 'aeuy';
        
$consonants 'bdghjmnpqrstvz';

        if ( 
$strength )
        {
            
$vowels .= 'AEUY';
            
$consonants .= 'BDGHJLMNPQRSTVWXZ';
        }

        if ( 
$strength )
        {
            
$consonants .= '23456789';
        }

        if ( 
$strength )
        {
            
$consonants .= '@#$%';
        }

        
$password '';
        
$alt time() % 2;

        for ( 
$i 0$i $length$i++ )
        {
            if ( 
$alt === )
            {
                
$password .= $consonants[(rand() % strlen($consonants))];
                
$alt 0;
            }
            else
            {
                
$password .= $vowels[(rand() % strlen($vowels))];
                
$alt 1;
            }
        }

        return 
$password;
    }

    public static function 
truncate$string$length$ending null )
    {
        if ( 
mb_strlen($string) <= $length )
        {
            return 
$string;
        }

        return 
mb_substr($string0$length) . (empty($ending) ? '' $ending);
    }

    
/**
     *  Split words that longer than $split_length in the $string by $delimiter
     *
     * @param string $string
     * @param string $delimiter
     * @param integer $split_length
     * @return string
     */
    
public static function splitWord$string$delimiter ' '$split_length 16 )
    {
        
$string_array explode(' '$string);
        foreach ( 
$string_array as $id => $word )
        {
            if ( 
mb_strpos($word'-') != )
                continue;

            if ( 
mb_strlen($word) > $split_length )
            {
                
$str mb_substr($word$split_length 2);
                
$string_array[$id] = mb_substr($word0$split_length 2) . $delimiter $str;
            }
        }

        return 
implode(' '$string_array);
    }

    
/**
     * @param string $xmlString
     * @return array
     */
    
public static function xmlToArray$xmlString )
    {
        return 
self::processXmlObject(simplexml_load_string($xmlString));
    }

    private static function 
processXmlObjectSimpleXMLElement $el )
    {
        
$result = (array) $el;

        foreach ( 
$result as $key => $val )
        {
            if ( 
is_object($val) && $val instanceof SimpleXMLElement )
            {
                
$result[$key] = self::processXmlObject($val);
            }
        }

        return 
$result;
    }
}
Онлайн: 2
Реклама