Попробуйте ваше регулярное выражение с совпадением
$value='x-Cem-Date:Wed, 16 Dec 2009 15:42:28 GMT';
$value = preg_match('/(^.+)(?=:)/e', $value, $matches);
print_r ($matches) . "\n";
Это должно вывести
Array
(
[0] => x-Cem-Date:Wed, 16 Dec 2009 15:42
[1] => x-Cem-Date:Wed, 16 Dec 2009 15:42
)
Попробуйте вместо этого
$value='x-Cem-Date:Wed, 16 Dec 2009 15:42:28 GMT';
$value = preg_replace('/(^.+?:)/e', "strtolower('\\1')", $value);
echo $value . "\n";
Там находится ?
, поэтому регулярное выражение не является жадным и захватывает больше, чем следовало.