MediaWiki master
StringUtils Class Reference

A collection of static methods to play with strings. More...

Static Public Member Functions

static delimiterExplode ( $startDelim, $endDelim, $separator, $subject, $nested=false)
 Explode a string, but ignore any instances of the separator inside the given start and end delimiters, which may optionally nest.
 
static delimiterReplace ( $startDelim, $endDelim, $replace, $subject, $flags='')
 Perform an operation equivalent to preg_replace() with flags.
 
static escapeRegexReplacement ( $string)
 Escape a string to make it suitable for inclusion in a preg_replace() replacement parameter.
 
static explode ( $separator, $subject)
 Workalike for explode() with limited memory usage.
 
static hungryDelimiterReplace ( $startDelim, $endDelim, $replace, $subject)
 Perform an operation equivalent to preg_replace()
 
static isUtf8 ( $value)
 Test whether a string is valid UTF-8.
 
static isValidPCRERegex ( $string)
 Utility function to check if the given string is a valid PCRE regex.
 
static replaceMarkup ( $search, $replace, $text)
 More or less "markup-safe" str_replace() Ignores any instances of the separator inside <...>
 
static unpack (string $format, string $data, $length=false)
 Wrapper around php's unpack.
 

Detailed Description

A collection of static methods to play with strings.

Definition at line 31 of file StringUtils.php.

Member Function Documentation

◆ delimiterExplode()

static StringUtils::delimiterExplode ( $startDelim,
$endDelim,
$separator,
$subject,
$nested = false )
static

Explode a string, but ignore any instances of the separator inside the given start and end delimiters, which may optionally nest.

The delimiters are literal strings, not regular expressions.

Parameters
string$startDelimStart delimiter
string$endDelimEnd delimiter
string$separatorSeparator string for the explode.
string$subjectSubject string to explode.
bool$nestedTrue iff the delimiters are allowed to nest.
Returns
ArrayIterator

Definition at line 61 of file StringUtils.php.

◆ delimiterReplace()

static StringUtils::delimiterReplace ( $startDelim,
$endDelim,
$replace,
$subject,
$flags = '' )
static

Perform an operation equivalent to preg_replace() with flags.

Matches this code:

preg_replace( "!$startDelim(.*)$endDelim!$flags", $replace, $subject );
Parameters
string$startDelimStart delimiter regular expression
string$endDelimEnd delimiter regular expression
string$replaceReplacement string. May contain $1, which will be replaced by the text between the delimiters
string$subjectString to search
string$flagsRegular expression flags
Returns
string The string with the matches replaced

Definition at line 250 of file StringUtils.php.

References $matches.

◆ escapeRegexReplacement()

static StringUtils::escapeRegexReplacement ( $string)
static

Escape a string to make it suitable for inclusion in a preg_replace() replacement parameter.

Parameters
string$string
Returns
string

Definition at line 316 of file StringUtils.php.

◆ explode()

static StringUtils::explode ( $separator,
$subject )
static

Workalike for explode() with limited memory usage.

Parameters
string$separator
string$subject
Returns
ArrayIterator|ExplodeIterator

Definition at line 328 of file StringUtils.php.

References explode().

Referenced by explode(), and hungryDelimiterReplace().

◆ hungryDelimiterReplace()

static StringUtils::hungryDelimiterReplace ( $startDelim,
$endDelim,
$replace,
$subject )
static

Perform an operation equivalent to preg_replace()

Matches this code:

preg_replace( "!$startDelim(.*?)$endDelim!", $replace, $subject );

..except that it's worst-case O(N) instead of O(N^2). Compared to delimiterReplace(), this implementation is fast but memory-hungry and inflexible. The memory requirements are such that I don't recommend using it on anything but guaranteed small chunks of text.

Parameters
string$startDelim
string$endDelim
string$replace
string$subject
Returns
string

Definition at line 120 of file StringUtils.php.

References explode().

◆ isUtf8()

static StringUtils::isUtf8 ( $value)
static

Test whether a string is valid UTF-8.

The function check for invalid byte sequences, overlong encoding but not for different normalisations.

Note
In MediaWiki 1.21, this function did not provide proper UTF-8 validation. In particular, the pure PHP code path did not in fact check for overlong forms. Beware of this when backporting code to that version of MediaWiki.
Since
1.21
Parameters
string$valueString to check
Returns
bool Whether the given $value is a valid UTF-8 encoded string

Definition at line 46 of file StringUtils.php.

◆ isValidPCRERegex()

static StringUtils::isValidPCRERegex ( $string)
static

Utility function to check if the given string is a valid PCRE regex.

Avoids manually calling suppressWarnings and restoreWarnings, and provides a one-line solution without the need to use .

Since
1.34
Parameters
string$stringThe string you want to check being a valid regex
Returns
bool

Definition at line 301 of file StringUtils.php.

◆ replaceMarkup()

static StringUtils::replaceMarkup ( $search,
$replace,
$text )
static

More or less "markup-safe" str_replace() Ignores any instances of the separator inside <...>

Parameters
string$search
string$replace
string$text
Returns
string

Definition at line 270 of file StringUtils.php.

References $matches.

◆ unpack()

static StringUtils::unpack ( string $format,
string $data,
$length = false )
static

Wrapper around php's unpack.

Parameters
string$formatThe format string (See php's docs)
string$dataA binary string of binary data
int | false$lengthThe minimum length of $data or false. This is to prevent reading beyond the end of $data. false to disable the check.

Also be careful when using this function to read unsigned 32 bit integer because php might make it negative.

Exceptions
UnpackFailedExceptionIf $data not long enough, or if unpack fails
Returns
array Associative array of the extracted data
Since
1.42

Definition at line 351 of file StringUtils.php.


The documentation for this class was generated from the following file: