- preg_replace_callback: documentation ( source)
- str_repeat: documentation ( source)
<?php
function encode($str) {
return preg_replace_callback('/(.)\1*/', function($match) { return strlen($match[1]) . $match[2]; }, $str);
}
function decode($str) {
return preg_replace_callback('/(\d+)(\D)/', function($match) { return str_repeat($match[2], $match[1]); }, $str);
}
echo encode('WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW'), "\n";
echo decode('12W1B12W3B24W1B14W'), "\n";