PHP 改变字符串的一部分
我有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
使用 str_replace() 就像
str_replace( '-med ', '-slider', $file_name )
use str_replace() like
str_replace( '-med', '-slider', $file_name )
尝试:
Try:
这很简单,您甚至不需要正则表达式来完成它。 str_replace (http://uk2.php.net/str_replace) 函数就是您所需要的。
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.
我建议只存储图像的“文件名”部分,然后在运行时添加 -med.jpg、-slider.jpg ...等。
但是 - 如果您想坚持使用现有的,只需使用:
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:
不需要正则表达式,这太过分了。
我还将在干草堆和替换字符串中包含“.jpg”,因为文件名可能已经包含“-med”,例如“test-med-med.jpg”。
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()
解决方案中,Capsule 的答案是最好的,但即使是这个也不能保证适用于所有可能的文件名。在不太可能(但很有可能)的情况下,它会失败,即字符串“-med.jpg”嵌入到较大的文件名中:例如filename-med.jpg_updated.jpg
。如果文件名具有.jpeg
扩展名,它也会失败。使用简单的正则表达式即可轻松获得 100% 可靠的解决方案:
请注意,此解决方案也可以轻松容纳其他类型的图像文件扩展名。
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:
Note that this solution easily accommodates other types of image file extensions as well.