PHP изменяет часть строки

У меня есть система php, которая загружает изображения и добавляет их имена к суффиксам -med -slider и т. Д., В зависимости от размера изображения. Однако только одно из имен файлов изображений сохраняется в базе данных, поэтому, когда я хочу отобразить изображение и вызвать имя файла из базы данных, я получаю что-то вроде:

filename-med.jpg как я могу изменить это, чтобы я мог заменить -med на -slider? Это возможно? Я не очень хорош в регулярных выражениях, и я предполагаю, что мне придется использовать это?

7 ответов

Решение

Используйте str_replace() как str_replace( '-med', '-slider', $file_name )

Regex в этом случае не является излишним.

Из 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);

Обратите внимание, что это решение легко поддерживает и другие типы расширений файлов изображений.

str_replace("-med", "-slider", "filename-med.jpg");

Это тривиально, вам даже не нужно регулярное выражение, чтобы сделать это. Функция str_replace (http://uk2.php.net/str_replace) - это то, что вам нужно.

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

Нет необходимости в регулярных выражениях, это излишне.

Я бы также включил ".jpg" в строки сена И замены, так как имя файла уже может содержать "-med", например, "test-med-med.jpg".

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

Я бы предложил просто сохранить часть изображения с именем "filename", а затем добавить -med.jpg, -slider.jpg ... и т. Д. Во время выполнения.

Но - если вы предпочитаете придерживаться того, что у вас есть, просто используйте:

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

Пытаться:

$newFilename = str_replace("-med", "-slider", "filename-med.jpg"):
Другие вопросы по тегам