如何 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);
将每个单词的第一个字母大写(galaxy
和 s6
)
或者,您也可以分解文件名的最后一部分,.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)));
参见:
我有这样的字符串:
$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);
将每个单词的第一个字母大写(galaxy
和s6
)
或者,您也可以分解文件名的最后一部分,.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)));
参见: