PHP使用正则表达式将大写文件扩展名转换为小写

时间:2013-03-11 21:22:10

标签: php regex

我正在尝试实现以下转换:

IM22_htp.JPG - > IM22_htp.jpg

到目前为止,我已尝试过以下内容,但似乎无效:

$string = "IM22_htp.JPG";
$pattern = '/(.+) \.(\w+)/i';
$replacement = '${1}\. strtolower($3)';
echo preg_replace($pattern, $replacement, $string);

3 个答案:

答案 0 :(得分:8)

使用正则表达式:

$string = "IM22_htp.JPG";
$new_string = preg_replace_callback('/\.\w+$/', function($m){
   return strtolower($m[0]);
}, $string);
echo $new_string;

使用pathinfo()

$string = "IM22_htp.JPG";
$new_string = pathinfo($string, PATHINFO_FILENAME) . '.' . strtolower(pathinfo($string, PATHINFO_EXTENSION));
echo $new_string;

答案 1 :(得分:4)

如果您使用pathinfo仅提取扩展名,小写它然后将其与文件名连接起来会更容易。

答案 2 :(得分:2)

echo preg_replace_callback('/\.(\w+)/',
         create_function('$x','return strtolower($x[0]);'),
         $string);