72 lines
2.1 KiB
PHP
72 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace Box\Spout\Common\Helper;
|
|
|
|
/**
|
|
* Class StringHelper
|
|
* This class provides helper functions to work with strings and multibyte strings.
|
|
*
|
|
* @codeCoverageIgnore
|
|
*
|
|
* @package Box\Spout\Common\Helper
|
|
*/
|
|
class StringHelper
|
|
{
|
|
/** @var bool Whether the mbstring extension is loaded */
|
|
protected $hasMbstringSupport;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->hasMbstringSupport = extension_loaded('mbstring');
|
|
}
|
|
|
|
/**
|
|
* Returns the length of the given string.
|
|
* It uses the multi-bytes function is available.
|
|
* @see strlen
|
|
* @see mb_strlen
|
|
*
|
|
* @param string $string
|
|
* @return int
|
|
*/
|
|
public function getStringLength($string)
|
|
{
|
|
return $this->hasMbstringSupport ? mb_strlen($string) : strlen($string);
|
|
}
|
|
|
|
/**
|
|
* Returns the position of the first occurrence of the given character/substring within the given string.
|
|
* It uses the multi-bytes function is available.
|
|
* @see strpos
|
|
* @see mb_strpos
|
|
*
|
|
* @param string $char Needle
|
|
* @param string $string Haystack
|
|
* @return int Char/substring's first occurrence position within the string if found (starts at 0) or -1 if not found
|
|
*/
|
|
public function getCharFirstOccurrencePosition($char, $string)
|
|
{
|
|
$position = $this->hasMbstringSupport ? mb_strpos($string, $char) : strpos($string, $char);
|
|
return ($position !== false) ? $position : -1;
|
|
}
|
|
|
|
/**
|
|
* Returns the position of the last occurrence of the given character/substring within the given string.
|
|
* It uses the multi-bytes function is available.
|
|
* @see strrpos
|
|
* @see mb_strrpos
|
|
*
|
|
* @param string $char Needle
|
|
* @param string $string Haystack
|
|
* @return int Char/substring's last occurrence position within the string if found (starts at 0) or -1 if not found
|
|
*/
|
|
public function getCharLastOccurrencePosition($char, $string)
|
|
{
|
|
$position = $this->hasMbstringSupport ? mb_strrpos($string, $char) : strrpos($string, $char);
|
|
return ($position !== false) ? $position : -1;
|
|
}
|
|
}
|