File "StringUtils.php"
Full Path: /home/warrior1/public_html/languages/wp-content/plugins/jetpack/vendor/nojimage/twitter-text-php/lib/Twitter/Text/StringUtils.php
File size: 5 KB
MIME-type: text/x-php
Charset: utf-8
<?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 Twitter\Text;
/**
* 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 (character)
* @param integer $length (character)
* @param string $encoding
* @return string
*/
public static function substr($str, $start, $length = null, $encoding = 'UTF-8')
{
if ($length === null) {
// 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')
{
$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 (($length === null) || ($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);
}
/**
* idn_to_ascii wrapper
*
* @param string $domain as utf8
* @return string
*/
public static function idnToAscii($domain)
{
// INTL_IDNA_VARIANT_UTS46 defined PHP 5.4.0 or later
if (defined('INTL_IDNA_VARIANT_UTS46')) {
return idn_to_ascii($domain, IDNA_ALLOW_UNASSIGNED, INTL_IDNA_VARIANT_UTS46);
}
return idn_to_ascii($domain, IDNA_ALLOW_UNASSIGNED);
}
/**
* normalize text from NFC
*
* @param string $text
* @return string
*/
public static function normalizeFromNFC($text)
{
return normalizer_normalize($text);
}
/**
* get code point
*
* @param string $char
* @param string $encoding
* @return int
*/
public static function ord($char, $encoding = 'UTF-8')
{
if (mb_strlen($char, $encoding) > 1) {
$char = mb_substr($char, 0, 1, $encoding);
}
return current(unpack('N', mb_convert_encoding($char, 'UCS-4BE', $encoding)));
}
/**
* get code point at
*
* @param string $str
* @param int $offset
* @param string $encoding
* @return int
*/
public static function codePointAt($str, $offset, $encoding = 'UTF-8')
{
return static::ord(mb_substr($str, $offset, 1, $encoding), $encoding);
}
/**
* is surrogate pair char
*
* @param string $char
* @return bool
*/
public static function isSurrogatePair($char)
{
return preg_match('/[\\x{10000}-\\x{10FFFF}]/u', $char);
}
/**
* get the character code count
*
* @param $string
* @param string $encoding
* @return int
*/
public static function charCount($string, $encoding = 'UTF-8')
{
$count = 0;
$strlen = static::strlen($string);
for ($offset = 0; $offset < $strlen; $offset++) {
$char = static::substr($string, $offset, 1, $encoding);
$count += static::isSurrogatePair($char) ? 2 : 1;
}
return $count;
}
}