如何修剪文件扩展名,用空格替换连字符,并用大写字母开始每个单词?

时间:2016-02-24 13:36:11

标签: php filenames explode uppercase

我有一个这样的字符串:

$image = 'galaxy-s6.jpg';

我想修剪.jpg,并将-替换为space,并将每个单词的第一个字母设为大写:

Galaxy S6

我试过

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

我得到了

galaxy s6

对我有任何暗示吗?

5 个答案:

答案 0 :(得分:3)

您可以使用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

答案 1 :(得分:3)

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

这里唯一的问题是你忽略了array_map的返回值。这样就可以了:

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

然而,总体上更为理智的方法是:

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

请参阅:

答案 2 :(得分:2)

您可以使用:

$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();

答案 3 :(得分:1)

只有少数功能:

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

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

答案 4 :(得分:1)

试试这段代码:

function firstFunction(){
  var d = jQuery.Deferred();
  // some very time consuming asynchronous code...
  setTimeout(function() {
    console.log('1');
    d.resolve();
  }, 1000);
  return d.promise();
}
function secondFunction(param){
  console.log('parm = '+param);
  var d = $.Deferred();
  setTimeout(function() {
    console.log('2');
    d.resolve();
  }, 10);
  return d.promise();
}

firstFunction().pipe(secondFunction('OK'));