mirror of https://github.com/pixelfed/pixelfed
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			105 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
<?php
 | 
						|
 | 
						|
/**
 | 
						|
 * @author     Takashi Nojima
 | 
						|
 * @copyright  Copyright 2014, Takashi Nojima
 | 
						|
 * @license    http://www.apache.org/licenses/LICENSE-2.0  Apache License v2.0
 | 
						|
 * @package    Twitter.Text
 | 
						|
 */
 | 
						|
 | 
						|
namespace App\Util\Lexer;
 | 
						|
 | 
						|
/**
 | 
						|
 * String utility
 | 
						|
 *
 | 
						|
 * @author     Takashi Nojima
 | 
						|
 * @copyright  Copyright 2014, Takashi Nojima
 | 
						|
 * @license    http://www.apache.org/licenses/LICENSE-2.0  Apache License v2.0
 | 
						|
 * @package    Twitter
 | 
						|
 */
 | 
						|
class StringUtils
 | 
						|
{
 | 
						|
 | 
						|
    /**
 | 
						|
     * alias of mb_substr
 | 
						|
     *
 | 
						|
     * @param string $str
 | 
						|
     * @param integer $start
 | 
						|
     * @param integer $length
 | 
						|
     * @param string $encoding
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public static function substr($str, $start, $length = null, $encoding = 'UTF-8')
 | 
						|
    {
 | 
						|
        if (is_null($length)) {
 | 
						|
            // for PHP <= 5.4.7
 | 
						|
            $length = mb_strlen($str, $encoding);
 | 
						|
        }
 | 
						|
        return mb_substr($str, $start, $length, $encoding);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * alias of mb_strlen
 | 
						|
     *
 | 
						|
     * @param string $str
 | 
						|
     * @param string $encoding
 | 
						|
     * @return integer
 | 
						|
     */
 | 
						|
    public static function strlen($str, $encoding = 'UTF-8')
 | 
						|
    {
 | 
						|
        return mb_strlen($str, $encoding);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * alias of mb_strpos
 | 
						|
     *
 | 
						|
     * @param string $haystack
 | 
						|
     * @param string $needle
 | 
						|
     * @param integer $offset
 | 
						|
     * @param string $encoding
 | 
						|
     * @return integer
 | 
						|
     */
 | 
						|
    public static function strpos($haystack, $needle, $offset = 0, $encoding = 'UTF-8')
 | 
						|
    {
 | 
						|
        return mb_strpos($haystack, $needle, $offset, $encoding);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * A multibyte-aware substring replacement function.
 | 
						|
     *
 | 
						|
     * @param  string  $string       The string to modify.
 | 
						|
     * @param  string  $replacement  The replacement string.
 | 
						|
     * @param  int     $start        The start of the replacement.
 | 
						|
     * @param  int     $length       The number of characters to replace.
 | 
						|
     * @param  string  $encoding     The encoding of the string.
 | 
						|
     *
 | 
						|
     * @return  string  The modified string.
 | 
						|
     *
 | 
						|
     * @see http://www.php.net/manual/en/function.substr-replace.php#90146
 | 
						|
     */
 | 
						|
    public static function substrReplace($string, $replacement, $start, $length = null, $encoding = 'UTF-8')
 | 
						|
    {
 | 
						|
        if (extension_loaded('mbstring') === true) {
 | 
						|
            $string_length = static::strlen($string, $encoding);
 | 
						|
            if ($start < 0) {
 | 
						|
                $start = max(0, $string_length + $start);
 | 
						|
            } elseif ($start > $string_length) {
 | 
						|
                $start = $string_length;
 | 
						|
            }
 | 
						|
            if ($length < 0) {
 | 
						|
                $length = max(0, $string_length - $start + $length);
 | 
						|
            } elseif ((is_null($length) === true) || ($length > $string_length)) {
 | 
						|
                $length = $string_length;
 | 
						|
            }
 | 
						|
            if (($start + $length) > $string_length) {
 | 
						|
                $length = $string_length - $start;
 | 
						|
            }
 | 
						|
 | 
						|
            $suffixOffset = $start + $length;
 | 
						|
            $suffixLength = $string_length - $start - $length;
 | 
						|
            return static::substr($string, 0, $start, $encoding) . $replacement . static::substr($string, $suffixOffset, $suffixLength, $encoding);
 | 
						|
        }
 | 
						|
        return (is_null($length) === true) ? substr_replace($string, $replacement, $start) : substr_replace($string, $replacement, $start, $length);
 | 
						|
    }
 | 
						|
}
 |