Search code examples
phpcolorsmirc

Parsing mIRC colors in php


I want to convert mirc color codes to html via php. Here is the example: http://searchirc.com/search.php?F=exact&T=chan&N=6246&I=anime-pirates

Thanks


Solution

  • Use preg_replace_callback:

    function mycallback($matches) {
        $bindings = array(
           0=>'white',
           1=>'black',
           2=>'blue',
           3=>'green',
           4=>'red',
           5=>'brown',
           6=>'purple',
        );
    
        $fg = isset($bindings[$matches[1]]) ? $bindings[$matches[1]] : 'transparent';
        $bg = isset($bindings[$matches[2]]) ? $bindings[$matches[2]] : 'transparent';
    
        return '<span style="color: '.$fg.'; background: '.$bg.';">'.$matches[3].'</span>';
    }
    
    $str = '^C3,1Hello^C foo ^C6,2World^C';
    $str = preg_replace_callback('/\^C([0-9]{1,2}),?([0-9]{1,2})(.*?)\^C/', 'mycallback', $str);
    
    echo $str;