有没有办法在“。”之前将“文本”添加到字符串中?示例:10.jpg

Posted

技术标签:

【中文标题】有没有办法在“。”之前将“文本”添加到字符串中?示例:10.jpg【英文标题】:Is there a way to prepend "text" to a string before the "."? Example: 10.jpg 【发布时间】:2020-05-07 00:56:14 【问题描述】:

我有不同尺寸的照片,但我在数据库中有 1 个文件名。但是,根据情况我想使用不同的文件大小。例如:

10.jpg

这是用户名和扩展名,但扩展名和用户 ID 可以/将在 .jpg, .jpeg, and .png 之间变化,所以我不知道每个给定时刻的确切文件扩展名。 我所有的文件类型如下:

10-thumbnail.jpg // chat size
10-profile.jpg //profile pic preview
10.jpg //full size

在回显照片时,我通常只是从数据库中获取图像后的路径。echo $profilepic; //10.jpg 但是,无需为每个版本的照片创建单独的列,id 就像能够操纵当前图像名称以包含类似10-profile.jpg 的内容。有没有办法在. 之前添加-profile?由于用户 ID 和扩展名可能/将会不同。我需要爆炸吗? 谢谢!

【问题讨论】:

等一下;你在你的问题中声明你想“预先”。以下两个答案中给出的都是“附加”;有什么我错过或不明白的吗?在点之前添加一些东西,我认为不符合前置条件,恕我直言。 【参考方案1】:

为了让用户名具有灵活性(例如,包含.),我将使用preg_replace 来查找文件名中的最后一个.,并在其前面插入大小:

$filename = '10.jpg';
$size = 'profile';
echo preg_replace('/(\.[^.]*)$/', "-$size$1", $filename);
$filename = 'john.smith.jpg';
$size = 'profile';
echo preg_replace('/(\.[^.]*)$/', "-$size$1", $filename);

输出:

10-profile.jpg
john.smith-profile.jpg

Demo on 3v4l.org

【讨论】:

@CenterTruth 不用担心 - 我很高兴能帮上忙。【参考方案2】:

是的,您需要分解 '.' 上的字符串。

这是一个例子:

$profilepic = '10.jpg';
$explode = explode('.', $profilepic);
$text = $explode[0] . '-text' . '.' . $explode[1];
var_dump($text);

【讨论】:

【参考方案3】:

从您的问题中的详细信息,我了解到:

用户 ID 是一个可变整数, 图像类型可能会有所不同。

因此,您的 full-size-picture-name 列将包含诸如“1.jpg”、“2.png”、...、“748.gif”、等的值。

在这种情况下,我会简单地使用str_replace()

<?php
$fullsizepic = '10.jpg';
echo $profilepic = str_replace('.', '-profile.', $fullsizepic); // 10-profile.jpg
?>

最好的问候

【讨论】:

以上是关于有没有办法在“。”之前将“文本”添加到字符串中?示例:10.jpg的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Microsoft 的 DAX 语言的文本字符串中添加换行符?

有没有办法通过css慢慢地将字母添加到文本中? [关闭]

防止 selectInput 换行

使用 ODFpy 将部分添加到 OpenDocument 文本文件

有没有办法使用 Microsoft 访问中的按钮将数据输入表格并清除所有文本框

在设置可见之前向 JFrame 添加内容