Methods |
public
static
|
coalesce(?string ...$strings): ?string
Get the first string that is not null or empty, or return the last value
Get the first string that is not null or empty, or return the last value
|
#
|
public
static
|
lower(string $string): string
Convert an ASCII string to lowercase
Convert an ASCII string to lowercase
|
#
|
public
static
|
upper(string $string): string
Convert an ASCII string to uppercase
Convert an ASCII string to uppercase
|
#
|
public
static
|
upperFirst(string $string): string
Make the first character in an ASCII string uppercase
Make the first character in an ASCII string uppercase
|
#
|
public
static
|
matchCase(string $string, string $match): string
Match an ASCII string's case to another string
Match an ASCII string's case to another string
|
#
|
public
static
|
startsWith(string $haystack, iterable<string>|string $needles, bool $ignoreCase = false): bool
Check if a string starts with a given substring
Check if a string starts with a given substring
|
#
|
public
static
|
endsWith(string $haystack, iterable<string>|string $needles, bool $ignoreCase = false): bool
Check if a string ends with a given substring
Check if a string ends with a given substring
|
#
|
public
static
|
isAscii(string $string): bool
Check if every character in a string has a codepoint between 0 and 127
Check if every character in a string has a codepoint between 0 and 127
|
#
|
public
static
|
normalise(string $string): string
Normalise a string for comparison
Normalise a string for comparison
The return value of this method is not covered by the Salient toolkit's
backward compatibility promise.
|
#
|
public
static
|
ellipsize(string $value, int $length): string
Replace the end of a string with an ellipsis ("...") if its length
exceeds a limit
Replace the end of a string with an ellipsis ("...") if its length
exceeds a limit
|
#
|
public
static
|
setEol(string $string, string $eol = "\n"): string
Apply an end-of-line sequence to a string
Apply an end-of-line sequence to a string
|
#
|
public
static
|
trimNativeEol(string $string): string
Remove native end-of-line sequences from the end of a string
Remove native end-of-line sequences from the end of a string
|
#
|
public
static
|
eolToNative(string $string): string
Replace newline characters in a string with the native end-of-line
sequence
Replace newline characters in a string with the native end-of-line
sequence
|
#
|
public
static
|
eolFromNative(string $string): string
Replace native end-of-line sequences in a string with the newline
character
Replace native end-of-line sequences in a string with the newline
character
|
#
|
public
static
|
snake(string $string, string $preserve = ''): string
Convert words in an arbitrarily capitalised string to snake_case,
optionally preserving non-word characters
Convert words in an arbitrarily capitalised string to snake_case,
optionally preserving non-word characters
|
#
|
public
static
|
kebab(string $string, string $preserve = ''): string
Convert words in an arbitrarily capitalised string to kebab-case,
optionally preserving non-word characters
Convert words in an arbitrarily capitalised string to kebab-case,
optionally preserving non-word characters
|
#
|
public
static
|
camel(string $string, string $preserve = ''): string
Convert words in an arbitrarily capitalised string to camelCase,
optionally preserving non-word characters
Convert words in an arbitrarily capitalised string to camelCase,
optionally preserving non-word characters
|
#
|
public
static
|
pascal(string $string, string $preserve = ''): string
Convert words in an arbitrarily capitalised string to PascalCase,
optionally preserving non-word characters
Convert words in an arbitrarily capitalised string to PascalCase,
optionally preserving non-word characters
|
#
|
public
static
|
words(
string $string,
string $separator = ' ',
string $preserve = '',
(Closure(string): string)|null $callback = null,
): string
Get words from an arbitrarily capitalised string and delimit them with a
separator, optionally preserving non-word…
Get words from an arbitrarily capitalised string and delimit them with a
separator, optionally preserving non-word characters and applying a
callback to each word
A word consists of one or more letters of the same case, or one uppercase
letter followed by zero or more lowercase letters. Numbers are treated as
lowercase letters except that two or more uppercase letters form one word
with any subsequent numbers.
Parameters
$preserve |
Non-alphanumeric characters to preserve.
|
|
#
|
public
static
|
expandTabs(string $text, int $tabSize = 8, int $column = 1): string
Expand tabs in a string to spaces
Expand tabs in a string to spaces
Parameters
$column |
The starting column (1-based) of $text .
|
|
#
|
public
static
|
expandLeadingTabs(string $text, int $tabSize = 8, bool $preserveLine1 = false, int $column = 1): string
Expand leading tabs in a string to spaces
Expand leading tabs in a string to spaces
Parameters
$preserveLine1 |
If true , tabs in the first line of $text
are not expanded.
|
$column |
The starting column (1-based) of $text .
|
|
#
|
public
static
|
toStream(string $string): resource
Copy a string to a temporary stream
Copy a string to a temporary stream
|
#
|
public
static
|
split(
non-empty-string $separator,
string $string,
int|null $limit = null,
bool $removeEmpty = true,
string|null $characters = null,
): list<string>
Split a string by a string and remove whitespace from the beginning and
end of each substring before removing empty…
Split a string by a string and remove whitespace from the beginning and
end of each substring before removing empty strings
Parameters
$limit |
Limit the number of substrings returned. Implies
$removeEmpty = false .
|
$characters |
Specify characters to trim instead of
whitespace. If an empty string is given, substrings are not trimmed.
|
|
#
|
public
static
|
splitDelimited(
non-empty-string $separator,
string $string,
bool $removeEmpty = false,
string|null $characters = null,
int-mask-of<Str::PRESERVE_*> $flags = Str::PRESERVE_DOUBLE_QUOTED,
): ($removeEmpty is true ? list<string> : non-empty-list<string>)
Without splitting bracket-delimited or double-quoted substrings, split a
string by a string and remove whitespace from…
Without splitting bracket-delimited or double-quoted substrings, split a
string by a string and remove whitespace from the beginning and end of
each substring before optionally removing empty strings
Parameters
$characters |
Specify characters to trim instead of
whitespace. If an empty string is given, substrings are not trimmed.
|
|
#
|
public
static
|
wrap(string $string, array{int, int}|int $width = 75, string $break = "\n", bool $cutLongWords = false): string
Wrap a string to a given number of characters, optionally varying the
widths of the second and subsequent lines from…
Wrap a string to a given number of characters, optionally varying the
widths of the second and subsequent lines from the first
If $width is an array , the first line of text is wrapped to the first
value, and text in subsequent lines is wrapped to the second value.
|
#
|
public
static
|
unwrap(
string $string,
string $break = "\n",
bool $ignoreEscapes = true,
bool $trimTrailingWhitespace = false,
bool $collapseBlankLines = false,
): string
Undo wordwrap(), preserving Markdown-style paragraphs and lists
Undo wordwrap(), preserving Markdown-style paragraphs and lists
Non-consecutive line breaks are converted to spaces unless they precede
one of the following:
- four or more spaces
- one or more tabs
- a Markdown-style list item (e.g.
- item , 1. item )
If $ignoreEscapes is false , whitespace escaped with a backslash is
preserved.
If $trimTrailingWhitespace is true , whitespace is removed from the
end of each line, and if $collapseBlankLines is true , three or more
subsequent line breaks are collapsed to two.
|
#
|
public
static
|
enclose(string $string, string $before, string|null $after = null): string
Enclose a string between delimiters
Enclose a string between delimiters
Parameters
$after |
If null , $before is used before and after
the string.
|
|
#
|
public
static
|
distance(string $string1, string $string2, bool $normalise = true): float
Get the Levenshtein distance between two strings relative to the length
of the longest string
Get the Levenshtein distance between two strings relative to the length
of the longest string
Parameters
$normalise |
If true, normalise $string1 and $string2 with
{@see Str::normalise()} before comparing them.
|
Returns
A value between 0 and 1 , where 0 means the strings
are identical, and 1 means they have no similarities.
|
#
|
public
static
|
similarity(string $string1, string $string2, bool $normalise = true): float
Get the similarity of two strings relative to the length of the longest
string
Get the similarity of two strings relative to the length of the longest
string
Parameters
$normalise |
If true, normalise $string1 and $string2 with
{@see Str::normalise()} before comparing them.
|
Returns
A value between 0 and 1 , where 0 means the strings
have no similarities, and 1 means they are identical.
|
#
|
public
static
|
ngramSimilarity(string $string1, string $string2, bool $normalise = true, int $size = 2): float
Get the ngrams shared between two strings relative to the number of
ngrams in the longest string
Get the ngrams shared between two strings relative to the number of
ngrams in the longest string
Parameters
$normalise |
If true, normalise $string1 and $string2 with
{@see Str::normalise()} before comparing them.
|
Returns
A value between 0 and 1 , where 0 means the strings
have no shared ngrams, and 1 means their ngrams are identical.
|
#
|
public
static
|
ngramIntersection(string $string1, string $string2, bool $normalise = true, int $size = 2): float
Get the ngrams shared between two strings relative to the number of
ngrams in the shortest string
Get the ngrams shared between two strings relative to the number of
ngrams in the shortest string
Parameters
$normalise |
If true, normalise $string1 and $string2 with
{@see Str::normalise()} before comparing them.
|
Returns
A value between 0 and 1 , where 0 means the strings
have no shared ngrams, and 1 means their ngrams are identical.
|
#
|
public
static
|
ngrams(string $string, int $size = 2): string[]
Get a string's n-grams
|
#
|
public
static
|
mergeLists(
string $text,
string $separator = "\n",
string|null $marker = null,
string $regex = '/^(?<indent>\h*[-*] )/',
bool $clean = false,
bool $loose = false,
): string
Remove duplicates in a string where top-level lines ("sections") are
grouped with "list items" below
Remove duplicates in a string where top-level lines ("sections") are
grouped with "list items" below
Lines that match $regex are regarded as list items, and other lines are
used as the section name for subsequent list items. If $loose is
false (the default), blank lines between list items clear the current
section name.
Top-level lines with no children, including any list items orphaned by
blank lines above them, are returned before sections with children.
If a named subpattern in $regex called indent matches a non-empty
string, subsequent lines with the same number of spaces for indentation
as there are characters in the match are treated as part of the item,
including any blank lines.
Line endings used in $text may be any combination of LF, CRLF and CR,
but LF ("\n" ) line endings are used in the return value.
Parameters
$separator |
Used between top-level lines and sections. Has
no effect on the end-of-line sequence used between items, which is always
LF ("\n" ).
|
$marker |
Added before each section name. Nested list
items are indented by the equivalent number of spaces. To add a leading
"- " to top-level lines and indent others with two spaces, set
$marker to "-" .
|
$clean |
If true , the first match of $regex in each section
name is removed.
|
$loose |
If true , blank lines between list items are ignored.
|
|
#
|