substr
Available inall subroutines.
Returns a substring of the byte string s
, starting from the byte offset
, of
byte length
. The substring is a copy of the original bytes.
The length
parameter is optional. If it's not specified, it means until the
end of the string.
The offset
parameter is zero-based. For example, substr("abcdefg", 0, 3)
is
"abc"
.
If the requested range is partially outside the string s
, the returned string
is truncated. For example, substr("abcdefg", 5, 3)
is "fg"
.
If the requested range is completely outside the string s
, an unset value is
returned. For example, substr("abc", 4, 2)
returns an unset value, the edge
case substr("abc", 3, 2)
being ""
.
A negative offset
counts backwards from the end of the string s
. For
example, substr("abcdefg", -3, 2)
is "ef"
.
A negative length
counts backwards from the end of the string s
with the
offset
taken into account. For example, substr("abcdefg", 1, -3)
is "bcd"
and substr("abcdefg", -4, -3)
is "de"
.
An unset value is also returned in the extreme edge cases of the offset
or
length
causing integer overflows.
IMPORTANT: substr
does not correctly handle UTF-8 encoded Unicode strings because byte offsets and lengths are likely to result in invalid UTF-8. Use utf8.substr
to handle UTF-8 encoded Unicode strings.
Examples
log "left=" substr("foobar", 0, 3)log "middle=" substr("foobar", 2, 3)log "right=" substr("foobar", -3)
Try it out
substr
is used in the following code examples. Examples apply VCL to real-world use cases and can be deployed as they are, or adapted for your own service. See the full list of code examples for more inspiration.
Click RUN on a sample below to provision a Fastly service, execute the code on Fastly, and see how the function behaves.
Extract a substring from a string value
Isolate a portion of a string identified by a range of characters.
Check validity of inputs using a non-crypto hash
Block or identify syntactically invalid requests at the edge by using a hash function of your choice.