Есть ли способ добавить «текст» к строке перед «.»? Пример: 10.jpg - PullRequest
0 голосов
/ 07 мая 2020

У меня разные размеры фотографий, но в базе данных есть одно имя файла. Однако в зависимости от ситуации я хочу использовать другой размер файла. Например:

10.jpg

Это имя пользователя и расширение, но расширение и идентификатор пользователя могут / будут варьироваться от .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 перед .? Поскольку идентификатор пользователя и расширение могут быть разными. Мне нужно взорваться?
Спасибо!

Ответы [ 3 ]

2 голосов
/ 07 мая 2020

Чтобы обеспечить гибкость в именах пользователей (например, чтобы включить .), я бы использовал 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

Демо на 3v4l.org

1 голос
/ 07 мая 2020

Да, вам нужно будет взорвать строку на '.'.

Вот пример:

$profilepic = '10.jpg';
$explode = explode('.', $profilepic);
$text = $explode[0] . '-text' . '.' . $explode[1];
var_dump($text);
0 голосов
/ 07 мая 2020

Из деталей вашего вопроса я понимаю, что:

  • идентификатор пользователя является целым числом переменной,
  • тип изображения может быть разным.

Таким образом, ваш столбец с именем полноразмерного изображения будет содержать такие значения, как '1.jpg', '2.png',…, '748.gif', et c.

В этой ситуации я бы просто использовал str_replace():

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

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...