Last Updated: February 25, 2016
·
255
· maumagau

Format a string excluding text in brackets

$str = 'This [WILL] be fOrMatTed';

$matches = array();
$searches = array();
preg_match_all('(\[(.+?)\])', $str, $placeholders);
$lstr = strtolower($str);
foreach ($placeholders[0] as $mk => $match) {
    $pos = $mk+1;
    $matches[] = $match;
    $searches[] = strtolower($match);
}
// Replace lower case with original case
$fstr = str_replace($searches,$matches,$lstr);
// Remove brackets
$fstr = str_replace(array('[',']'), '', $fstr);

echo $fstr // outputs 'this WILL be formatted'