- preg_replace_callback: documentation ( source)
- mb_strtoupper: documentation ( source)
- mb_strtolower: documentation ( source)
<?php
$string = 'aaAAąAŚĆżź';
echo preg_replace_callback(
'/(\p{Lu})|(\p{Ll})/u',
function($m) {
return $m[1]
? mb_strtolower($m[1])
: mb_strtoupper($m[2]);
},
$string
);