Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.
<?php

namespace Box\Spout\Common\Helper;

/**
 * Class StringHelper
 * This class provides helper functions to work with strings and multibyte strings.
 *
 * @codeCoverageIgnore
 */
class StringHelper
{
    /** @var bool Whether the mbstring extension is loaded */
    protected $hasMbstringSupport;

> /** @var bool Whether the code is running with PHP7 or older versions */ /** > private $isRunningPhp7OrOlder; * > */ > /** @var array Locale info, used for number formatting */ public function __construct() > private $localeInfo; { >
< $this->hasMbstringSupport = extension_loaded('mbstring');
> $this->hasMbstringSupport = \extension_loaded('mbstring'); > $this->isRunningPhp7OrOlder = \version_compare(PHP_VERSION, '8.0.0') < 0; > $this->localeInfo = \localeconv();
} /** * 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);
> 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);
> $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);
> $position = $this->hasMbstringSupport ? \mb_strrpos($string, $char) : \strrpos($string, $char);
return ($position !== false) ? $position : -1;
> } } > } > /** > * Formats a numeric value (int or float) in a way that's compatible with the expected spreadsheet format. > * > * Formatting of float values is locale dependent in PHP < 8. > * Thousands separators and decimal points vary from locale to locale (en_US: 12.34 vs pl_PL: 12,34). > * However, float values must be formatted with no thousands separator and a "." as decimal point > * to work properly. This method can be used to convert the value to the correct format before storing it. > * > * @see https://wiki.php.net/rfc/locale_independent_float_to_string for the changed behavior in PHP8. > * > * @param int|float $numericValue > * @return string > */ > public function formatNumericValue($numericValue) > { > if ($this->isRunningPhp7OrOlder && is_float($numericValue)) { > return str_replace( > [$this->localeInfo['thousands_sep'], $this->localeInfo['decimal_point']], > ['', '.'], > $numericValue > ); > } > > return $numericValue;