$maxLength) { return substr($string, 0, $maxLength - strlen($ellipsis)) . $ellipsis; } return $string; } /** * Add ellipsis in the center of a string when a string is longer than max length * * @param string $string * @param int $maxLength * @param string $ellipsis * * @return string */ public static function ellipsisCenter($string, $maxLength, $ellipsis = '...') { if ($string === null) { return ''; } $start = ceil($maxLength / 2.0); $end = floor($maxLength / 2.0); if (strlen($string) > $maxLength) { return substr($string, 0, $start - strlen($ellipsis)) . $ellipsis . substr($string, - $end); } return $string; } /** * Find and return all similar strings in $possibilites matching $string with the given minimum $similarity * * @param string $string * @param array $possibilities * @param float $similarity * * @return array */ public static function findSimilar($string, array $possibilities, $similarity = 0.33) { if (empty($string)) { return array(); } $matches = array(); foreach ($possibilities as $possibility) { $distance = levenshtein($string, $possibility); if ($distance / strlen($string) <= $similarity) { $matches[] = $possibility; } } return $matches; } /** * Test whether the given string ends with the given suffix * * @param string $string The string to test * @param string $suffix The suffix the string must end with * * @return bool */ public static function endsWith($string, $suffix) { if ($string === null) { return false; } $stringSuffix = substr($string, -strlen($suffix)); return $stringSuffix !== false ? $stringSuffix === $suffix : false; } /** * Generates an array of strings that constitutes the cartesian product of all passed sets, with all * string combinations concatenated using the passed join-operator. * *
* cartesianProduct(
* array(array('foo', 'bar'), array('mumble', 'grumble', null)),
* '_'
* );
* => array('foo_mumble', 'foo_grumble', 'bar_mumble', 'bar_grumble', 'foo', 'bar')
*
*
* @param array $sets An array of arrays containing all sets for which the cartesian
* product should be calculated.
* @param string $glue The glue used to join the strings, defaults to ''.
*
* @returns array The cartesian product in one array of strings.
*/
public static function cartesianProduct(array $sets, $glue = '')
{
$product = null;
foreach ($sets as $set) {
if (! isset($product)) {
$product = $set;
} else {
$newProduct = array();
foreach ($product as $strA) {
foreach ($set as $strB) {
if ($strB === null) {
$newProduct []= $strA;
} else {
$newProduct []= $strA . $glue . $strB;
}
}
}
$product = $newProduct;
}
}
return $product;
}
}