避免PHP替换函数的区分大小写

时间:2015-04-24 04:29:30

标签: php

我有以下代码用于显示图像的缩略图,缩略图是使用_small创建的,位于文件名的末尾。它是一个简单的替换功能:

<?php
if ($row_rsAdminMenu['image1']) {
    $src = $row_rsAdminMenu['image1'];
    $src = str_replace('.JPG', '_small.JPG', $src);
} else {
    $src = '../../images/NoPic.jpg';
}
echo '<img src="' . htmlspecialchars($src, ENT_COMPAT, 'UTF-8') . '" />'; ?>

3 个答案:

答案 0 :(得分:1)

您可以使用str_ireplace进行不区分大小写的替换。

 $src = str_ireplace('.JPG', '_small.JPG', $src);

答案 1 :(得分:1)

问题不是很清楚,但我认为您希望能够更改文件名,如下所示:

image.JPG -> image_small.JPG
image.jpg -> image_small.jpg

这可以使用preg_replace()使用反向引用来完成,例如:

php > echo preg_replace('/(^.*)(\.jpg)$/i', '\1_small\2', 'image.jpg');
image_small.jpg
php > echo preg_replace('/(^.*)(\.jpg)$/i', '\1_small\2', 'image.JPG');
image_small.JPG
php > echo preg_replace('/(^.*)(\.jpg)$/i', '\1_small\2', 'image.jPg');
image_small.jPg

这可以通过在2个匹配的组之间插入"_small"来实现。

在您的代码中:

<?php
if ($row_rsAdminMenu['image1']) {
    $src = $row_rsAdminMenu['image1'];
    $src = preg_replace('/(^.*)(\.jpg)$/i', '\1_small\2', $src);
} else {
    $src = '../../images/NoPic.jpg';
}
echo '<img src="' . htmlspecialchars($src, ENT_COMPAT, 'UTF-8') . '" />'; ?>

如果需要,稍加修改它也适用于其他文件扩展名:

php > echo preg_replace('/(^.*)(\.(jpg|gif|png|jpeg))$/i', '\1_small\2', 'image.PNG');
image_small.PNG

答案 2 :(得分:0)

尝试 -

echo preg_replace('/.jpg/i', '', '_small.JPG');

或者如果想要删除多个扩展程序 -

echo preg_replace('/.(jpg|gif|png)/i', '', '_small.JPG  _small.GIF');