PHP: str_increment - Manual (original) (raw)
(PHP 8 >= 8.3.0)
str_increment β Increment an alphanumeric string
Description
Parameters
string
The input string.
Return Values
Returns the incremented alphanumeric ASCII string.
Errors/Exceptions
A ValueError is thrown ifstring is empty.
A ValueError is thrown ifstring is not an alphanumericASCII string.
Examples
Example #1 Basic str_increment() example
<?php $str = 'ABC'; var_dump(str_increment($str)); ?>
The above example will output:
Example #2 str_increment() example with a carry
<?php $str = 'DZ'; var_dump(str_increment($str));$str = 'ZZ'; var_dump(str_increment($str)); ?>
The above example will output:
string(2) "EA" string(3) "AAA"
Found A Problem?
yarns_purport0n at icloud dot com ΒΆ
1 year ago
The strings are incremented per character and each character position can be one of 3 modes:
1. [A-Z] uppercase
2. [a-z] lowercase
3. [0-9] decimal
you can mix any combination of the modes and (at least in right to left languages like english) it always increments from the right overflowing leftwards
the mode/type of character that overflows remains the mode/type of the first (0 index) position.
so: input 'zZ9' & 'aaA0' is returned
so: input 'Z9z' & 'AA0a' is returned
so: input '9zZ' & '10aA' is returned
Example:
<?php
$str = 'zZ9'; // overflows in lowercase
echo <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>s</mi><mi>t</mi><mi>r</mi><mo>=</mo><mi>s</mi><mi>t</mi><msub><mi>r</mi><mi>i</mi></msub><mi>n</mi><mi>c</mi><mi>r</mi><mi>e</mi><mi>m</mi><mi>e</mi><mi>n</mi><mi>t</mi><mo stretchy="false">(</mo></mrow><annotation encoding="application/x-tex">str = str_increment(</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6151em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal">t</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal">t</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">β</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal">n</span><span class="mord mathnormal">cre</span><span class="mord mathnormal">m</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span><span class="mord mathnormal">t</span><span class="mopen">(</span></span></span></span>str).PHP_EOL; // aaA0
$str = 'Z9z'; // overflows in uppercase
echo <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>s</mi><mi>t</mi><mi>r</mi><mo>=</mo><mi>s</mi><mi>t</mi><msub><mi>r</mi><mi>i</mi></msub><mi>n</mi><mi>c</mi><mi>r</mi><mi>e</mi><mi>m</mi><mi>e</mi><mi>n</mi><mi>t</mi><mo stretchy="false">(</mo></mrow><annotation encoding="application/x-tex">str = str_increment(</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6151em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal">t</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal">t</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">β</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal">n</span><span class="mord mathnormal">cre</span><span class="mord mathnormal">m</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span><span class="mord mathnormal">t</span><span class="mopen">(</span></span></span></span>str).PHP_EOL; // AA0a
$str = '9zZ'; // overflows in decimal
echo ($str = str_increment($str)); // 10aA
?>