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

У меня есть такая строка:

$image = 'galaxy-s6.jpg';

Я хочу обрезать .jpgи заменить - с spaceи сделайте первую букву каждого слова в верхнем регистре следующим образом:

Galaxy S6

Я старался

$name  = str_replace('.jpg', '', $image);
$name  = str_replace('-', ' ', $name);
array_map('ucfirst', explode(' ', $name));

я получил

galaxy s6

Любые намеки для меня?

2

Решение

Ты можешь использовать ucwords() функция:

<?php

$image = 'galaxy-s6.jpg';
$name  = str_replace('.jpg', '', $image);
$name  = str_replace('-', ' ', $name);
echo ucwords($name);

?>
  • $name = str_replace('.jpg', '', $image); заменит .jpg с пустым.

  • $name = str_replace('-', ' ', $name); заменит - с пустым.

  • echo ucwords($name); будет использовать первую букву каждого слова (galaxy а также s6)

альтернативно, Вы также можете взорвать последнюю часть имени файла, .jpg или любое другое расширение файла и удалите его, используя explode() функция:

<?php

$image = 'galaxy-s6.jpg';
$name = explode(".", $image);
$name  = str_replace('-', ' ', $name[0]);
echo ucwords($name);

?>

Таким образом, оба метода будут повторяться Galaxy S6,

3

Другие решения

array_map('ucfirst', explode(' ', $name));

Единственная проблема здесь заключается в том, что вы игнорируете возвращаемое значение array_map, Это сделало бы это:

echo join(' ', array_map('ucfirst', explode(' ', $name)));

Тем не менее, общий более разумный подход заключается в следующем:

echo ucwords(str_replace('-', ' ', pathinfo($image, PATHINFO_FILENAME)));

Увидеть:

3

Вы можете использовать это:

$string = "galaxy-s6.jpg";
$exploded = explode(".",$string);
$replace = str_replace("-", " ", $exploded[0]);
$upper = ucwords($replace);

echo $upper;

Результат:

Galaxy S6

Объяснение:

  • взорваться для взрыва (.)
  • заменить — с пробелом
  • получить индекс 0 из взорванного массива
  • Поскольку @deceze предполагает, что нет необходимости в ucfirst, просто используйте ucwords () в качестве заглавной буквы.

ОБНОВЛЕНИЕ 1:

Предположим, если у вас есть (.) Между вашим именем файла, чем explode() не удастся в этом случае вы можете справиться с этим с помощью preg_replace();

// your string
$string = "galaxy-s6.jpg";

// replace after .
$removed = preg_replace('/\\.[^.\\s]{3,4}$/', '', $string);

// replace - between file name
$replace = str_replace("-", " ", $removed);

// ucwords for first letter capital
$upper = ucwords($replace);

echo $upper;
2

Всего несколько функций:

<?php
$a = "galaxy-s6.jpg";
$a = str_replace(".jpg","",$a);
$a = str_replace("-"," ",$a);
echo ucwords($a)
?>

Демо: http://sandbox.onlinephpfunctions.com/code/213abb52e2aed4265c5bc1af45c544559ae9757f

1

Попробуйте этот код:

 $string = 'galaxy-s6.jpg';
$name = str_replace('.jpg', '', $string);
$name = str_replace('-', ' ', $name);
$name = explode(' ', $name);
foreach ($name as $key => $value) {
$name[$key] = ucfirst($value);
}
$name = implode(' ', $name);
echo $name;// => Galaxy S6
1
По вопросам рекламы [email protected]