PHP 改变字符串的一部分

发布于 2024-10-29 23:16:27 字数 179 浏览 3 评论 0原文

我有一个 php 系统,可以上传图像并根据图像的大小使用 -med -slider 等为文件名添加后缀。但是,只有一个图像文件名保存到数据库中,因此当我想显示图像并从数据库调用文件名时,我会得到类似

filename-med.jpg 的信息,如何更改它以便替换 -med与-滑块?这可能吗?我不擅长正则表达式,我想我必须使用它?

I have a php system that uploads images and suffixes their files names with -med -slider etc dependant on what size the image is. However only one of the image filenames get saved to the database, so when I want to display an image and call the filename from the database, I get something like,

filename-med.jpg how can I change that so I can replace -med with -slider? is this possible? I am no good at regex and I assume I would have to use that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

情深已缘浅 2024-11-05 23:16:27

使用 str_replace() 就像 str_replace( '-med ', '-slider', $file_name )

use str_replace() like str_replace( '-med', '-slider', $file_name )

她说她爱他 2024-11-05 23:16:27
str_replace("-med", "-slider", "filename-med.jpg");
str_replace("-med", "-slider", "filename-med.jpg");
梦里人 2024-11-05 23:16:27

尝试:

$newFilename = str_replace("-med", "-slider", "filename-med.jpg"):

Try:

$newFilename = str_replace("-med", "-slider", "filename-med.jpg"):
Oo萌小芽oO 2024-11-05 23:16:27

这很简单,您甚至不需要正则表达式来完成它。 str_replace (http://uk2.php.net/str_replace) 函数就是您所需要的。

$old_filename = "foo-med.jpg"
$new_filename = str_replace('-med','-slider',$old_filename);

It's trivial, you don't even need regex to do it. The str_replace (http://uk2.php.net/str_replace) function is what you need.

$old_filename = "foo-med.jpg"
$new_filename = str_replace('-med','-slider',$old_filename);
放肆 2024-11-05 23:16:27

我建议只存储图像的“文件名”部分,然后在运行时添加 -med.jpg、-slider.jpg ...等。

但是 - 如果您想坚持使用现有的,只需使用:

$myFile = "filename-med.jpg";
echo str_replace('-med', '-slider', $myFile);

I would suggest just storing the "filename" part of your image, then adding on the -med.jpg, -slider.jpg ...etc at runtime.

But - if you'd rather stick with what you have, just use:

$myFile = "filename-med.jpg";
echo str_replace('-med', '-slider', $myFile);
注定孤独终老 2024-11-05 23:16:27

不需要正则表达式,这太过分了。

我还将在干草堆和替换字符串中包含“.jpg”,因为文件名可能已经包含“-med”,例如“test-med-med.jpg”。

str_replace('-med.jpg', '-slider.jpg', $filename);

No need for regexp, this is overkill.

I would also include ".jpg" in the haystack AND replacement strings since a filename could already contain "-med", like "test-med-med.jpg" for example.

str_replace('-med.jpg', '-slider.jpg', $filename);
梦里人 2024-11-05 23:16:27

在这种情况下,正则表达式并不算过大。

在迄今为止提出的 str_replace() 解决方案中,Capsule 的答案是最好的,但即使是这个也不能保证适用于所有可能的文件名。在不太可能(但很有可能)的情况下,它会失败,即字符串“-med.jpg”嵌入到较大的文件名中:例如filename-med.jpg_updated.jpg。如果文件名具有 .jpeg 扩展名,它也会失败。

使用简单的正则表达式即可轻松获得 100% 可靠的解决方案:

$re = '/-med\.(jpe?g|gif|png)$/mi';
$filename = preg_replace($re, '-slider.$1', $filename);

请注意,此解决方案也可以轻松容纳其他类型的图像文件扩展名。

Regex in this case is not overkill.

Of the str_replace() solutions presented thus far, Capsule's answer is the best, but even this one is not guaranteed to work for all possible file names. It fails in the unlikely (but very possible) case where the string '-med.jpg' is embedded inside a larger filename: e.g. filename-med.jpg_updated.jpg. It also fails if the filename has a .jpeg extension.

A 100% reliable solution is easily attained with a simple regex:

$re = '/-med\.(jpe?g|gif|png)$/mi';
$filename = preg_replace($re, '-slider.$1', $filename);

Note that this solution easily accommodates other types of image file extensions as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文