如何 trim 文件扩展名,将连字符替换为空格,并以大写字母开头每个单词?

How to trim filename extension, replace hyphens with spaces, and start each word with a capital?

我有这样的字符串:

$image = 'galaxy-s6.jpg';

我想trim .jpg,把-换成space,每个单词的首字母大写,像这样:

Galaxy S6

我试过了

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

我得到了

galaxy s6

对我有什么提示吗?

你可以使用这个:

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

echo $upper;

结果:

Galaxy S6

解释:

  • 使用 (.) 进行爆炸
  • 将 - 替换为 space
  • 从展开的数组中得到 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;

只有几个功能:

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

演示:http://sandbox.onlinephpfunctions.com/code/213abb52e2aed4265c5bc1af45c544559ae9757f

您可以使用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); 将每个单词的第一个字母大写(galaxys6

或者,您也可以分解文件名的最后一部分,.jpg 或任何其他文件扩展名并将其删除,使用explode() 函数:

<?php

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

?>

因此,这两种方法都会回显 Galaxy S6

试试这个代码:

 $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
array_map('ucfirst', explode(' ', $name));

这里唯一的问题是您忽略了 array_map 的 return 值。这样就可以了:

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

但是,总体上更明智的方法是:

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

参见: