MediaWiki REL1_34
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 delimiterReplaceCallback ( $startDelim, $endDelim, $callback, $subject, $flags='')
 Perform an operation equivalent to preg_replace_callback()
 
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 explodeMarkup ( $separator, $text)
 More or less "markup-safe" explode() Ignores any instances of the separator inside <...>
 
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 <...>
 

Detailed Description

A collection of static methods to play with strings.

Definition at line 29 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 59 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 248 of file StringUtils.php.

References $matches.

◆ delimiterReplaceCallback()

static StringUtils::delimiterReplaceCallback ( $startDelim,
$endDelim,
$callback,
$subject,
$flags = '' )
static

Perform an operation equivalent to preg_replace_callback()

Matches this code:

preg_replace_callback( "!$startDelim(.*)$endDelim!s$flags", $callback, $subject );

If the start delimiter ends with an initial substring of the end delimiter, e.g. in the case of C-style comments, the behavior differs from the model regex. In this implementation, the end must share no characters with the start, so e.g. /*\\/ is not considered to be both the start and end of a comment. /*\\/xy/*\\/ is considered to be a single comment with contents /xy/.

The implementation of delimiterReplaceCallback() is slower than hungryDelimiterReplace() but uses far less memory. The delimiters are literal strings, not regular expressions.

Parameters
string$startDelimStart delimiter
string$endDelimEnd delimiter
callable$callbackFunction to call on each match
string$subject
string$flagsRegular expression flags
Exceptions
InvalidArgumentException
Returns
string

Definition at line 157 of file StringUtils.php.

◆ 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 343 of file StringUtils.php.

Referenced by MediaWiki\Extensions\ParserFunctions\ParserFunctions\runReplace().

◆ 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 356 of file StringUtils.php.

References explode().

Referenced by explode(), explodeMarkup(), and hungryDelimiterReplace().

◆ explodeMarkup()

static StringUtils::explodeMarkup ( $separator,
$text )
static

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

Parameters
string$separator
string$text
Returns
array

Definition at line 265 of file StringUtils.php.

References $matches, and explode().

◆ 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 118 of file StringUtils.php.

References $s, and 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 44 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 328 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 297 of file StringUtils.php.

References $matches.


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