* A collection of static methods to play with strings.
*/
class StringUtils {
-
/**
* Test whether a string is valid UTF-8.
*
* Beware of this when backporting code to that version of MediaWiki.
*
* @param string $value String to check
- * @param boolean $disableMbstring Whether to use the pure PHP
+ * @param bool $disableMbstring Whether to use the pure PHP
* implementation instead of trying mb_check_encoding. Intended for unit
* testing. Default: false
*
- * @return boolean Whether the given $value is a valid UTF-8 encoded string
+ * @return bool Whether the given $value is a valid UTF-8 encoded string
*/
static function isUtf8( $value, $disableMbstring = false ) {
$value = (string)$value;
return false;
}
}
+
return true;
}
* hungry and inflexible. The memory requirements are such that I don't
* recommend using it on anything but guaranteed small chunks of text.
*
- * @param $startDelim
- * @param $endDelim
- * @param $replace
- * @param $subject
+ * @param string $startDelim
+ * @param string $endDelim
+ * @param string $replace
+ * @param string $subject
*
* @return string
*/
$output .= $replace . substr( $s, $endDelimPos + strlen( $endDelim ) );
}
}
+
return $output;
}
* 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/.
*
- * @param string $startDelim start delimiter
- * @param string $endDelim end delimiter
- * @param $callback Callback: function to call on each match
- * @param $subject String
- * @param string $flags regular expression flags
+ * @param string $startDelim Start delimiter
+ * @param string $endDelim End delimiter
+ * @param callable $callback Function to call on each match
+ * @param string $subject
+ * @param string $flags Regular expression flags
* @throws MWException
* @return string
*/
- static function delimiterReplaceCallback( $startDelim, $endDelim, $callback, $subject, $flags = '' ) {
+ static function delimiterReplaceCallback( $startDelim, $endDelim, $callback,
+ $subject, $flags = ''
+ ) {
$inputPos = 0;
$outputPos = 0;
$output = '';
$m = array();
while ( $inputPos < strlen( $subject ) &&
- preg_match( "!($encStart)|($encEnd)!S$flags", $subject, $m, PREG_OFFSET_CAPTURE, $inputPos ) )
- {
+ preg_match( "!($encStart)|($encEnd)!S$flags", $subject, $m, PREG_OFFSET_CAPTURE, $inputPos )
+ ) {
$tokenOffset = $m[0][1];
if ( $m[1][0] != '' ) {
if ( $foundStart &&
- $strcmp( $endDelim, substr( $subject, $tokenOffset, $endLength ) ) == 0 )
- {
+ $strcmp( $endDelim, substr( $subject, $tokenOffset, $endLength ) ) == 0
+ ) {
# An end match is present at the same location
$tokenType = 'end';
$tokenLength = $endLength;
$output .= call_user_func( $callback, array(
substr( $subject, $outputPos, $tokenOffset + $tokenLength - $outputPos ),
substr( $subject, $contentPos, $tokenOffset - $contentPos )
- ));
+ ) );
$foundStart = false;
} else {
# Non-matching end, write it out
if ( $outputPos < strlen( $subject ) ) {
$output .= substr( $subject, $outputPos );
}
+
return $output;
}
*
* preg_replace( "!$startDelim(.*)$endDelim!$flags", $replace, $subject )
*
- * @param string $startDelim start delimiter regular expression
- * @param string $endDelim end delimiter regular expression
- * @param string $replace replacement string. May contain $1, which will be
+ * @param string $startDelim Start delimiter regular expression
+ * @param string $endDelim End delimiter regular expression
+ * @param string $replace Replacement string. May contain $1, which will be
* replaced by the text between the delimiters
- * @param string $subject to search
- * @param string $flags regular expression flags
- * @return String: The string with the matches replaced
+ * @param string $subject String to search
+ * @param string $flags Regular expression flags
+ * @return string The string with the matches replaced
*/
static function delimiterReplace( $startDelim, $endDelim, $replace, $subject, $flags = '' ) {
$replacer = new RegexlikeReplacer( $replace );
+
return self::delimiterReplaceCallback( $startDelim, $endDelim,
$replacer->cb(), $subject, $flags );
}
static function escapeRegexReplacement( $string ) {
$string = str_replace( '\\', '\\\\', $string );
$string = str_replace( '$', '\\$', $string );
+
return $string;
}
* StringUtils::delimiterReplaceCallback()
*/
class Replacer {
-
/**
* @return array
*/
* Class to replace regex matches with a string similar to that used in preg_replace()
*/
class RegexlikeReplacer extends Replacer {
- var $r;
+ private $r;
/**
* @param string $r
foreach ( $matches as $i => $match ) {
$pairs["\$$i"] = $match;
}
+
return strtr( $this->r, $pairs );
}
-
}
/**
* Class to perform secondary replacement within each replacement string
*/
class DoubleReplacer extends Replacer {
-
/**
- * @param $from
- * @param $to
+ * @param mixed $from
+ * @param mixed $to
* @param int $index
*/
function __construct( $from, $to, $index = 0 ) {
* Class to perform replacement based on a simple hashtable lookup
*/
class HashtableReplacer extends Replacer {
- var $table, $index;
+ private $table, $index;
/**
- * @param $table
+ * @param array $table
* @param int $index
*/
function __construct( $table, $index = 0 ) {
* Supports lazy initialisation of FSS resource
*/
class ReplacementArray {
- /*mostly private*/ var $data = false;
- /*mostly private*/ var $fss = false;
+ private $data = false;
+ private $fss = false;
/**
* Create an object with the specified replacement array
$result = strtr( $subject, $this->data );
wfProfileOut( __METHOD__ . '-strtr' );
}
+
return $result;
}
}
*/
class ExplodeIterator implements Iterator {
// The subject string
- var $subject, $subjectLength;
+ private $subject, $subjectLength;
// The delimiter
- var $delim, $delimLength;
+ private $delim, $delimLength;
// The position of the start of the line
- var $curPos;
+ private $curPos;
// The position after the end of the next delimiter
- var $endPos;
+ private $endPos;
// The current token
- var $current;
+ private $current;
/**
* Construct a DelimIterator
}
}
$this->refreshCurrent();
+
return $this->current;
}