3v4l.org

run code in 500+ PHP versions simultaneously
<?php $string = 'text a[link1], a[link2] a[link3] text text text a[link4] text a[link5] text'; $styleCounter = 0; echo preg_replace_callback( '/((?<=]))?+(,? ?)a\[([^][]*)]/', function ($m) use(&$styleCounter) { if ($m[1] === null) { ++$styleCounter; } return "{$m[2]}<a href=\"{$m[3]}\" class=\"style{$styleCounter}\">{$m[3]}</a>"; }, $string, -1, $count, PREG_UNMATCHED_AS_NULL ); /*<a href="link1" class="style1">link1</a><a href="link2" class="style1">link2</a><a href="link3" class="style1">link3</a> text text text <a href="link4" class="style2">link4</a> text <a href="link5" class="style2">link5</a> text*/
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.21, 8.5.0 - 8.5.7
text <a href="link1" class="style1">link1</a>, <a href="link2" class="style1">link2</a> <a href="link3" class="style1">link3</a> text text text <a href="link4" class="style2">link4</a> text <a href="link5" class="style3">link5</a> text

preferences:
91.2 ms | 1302 KiB | 4 Q