如何将以下示例转换为大写:
title-title-title
结果应该是:
Title-Title-Title
我尝试使用ucwords但它会像这样转换:Title-title-title
我目前有这个:
echo $title = ($this->session->userdata('head_title') != '' ? $this->session->userdata('head_title'):'Our Home Page');
答案 0 :(得分:6)
在这个特定的字符串示例中,您可以首先爆炸字符串,使用该函数ucfirst()
并应用于所有爆炸字符串,然后将它们重新组合在一起:
$string = 'title-title-title';
$strings = implode('-', array_map('ucfirst', explode('-', $string)));
echo $strings;
申请时应该相当简单:
$title = '';
if($this->session->userdata('head_title') != '') {
$raw_title = $this->session->userdata('head_title'); // title-title-title
$title = implode('-', array_map('ucfirst', explode('-', $raw_title)));
} else {
$title = 'Our Home Page';
}
echo $title;
答案 1 :(得分:4)
echo str_replace(" ","-",ucwords(str_replace("-"," ","title-title-title")));
<强> Fiddle 强>
<强>输出:强>
Title-Title-Title
答案 2 :(得分:1)
不像Ghost那样迅速,但初学者可以更容易看到发生的事情。
//break words on delimiter
$arr = explode("-", $string);
//capitalize first word only
$ord = array_map('ucfirst', $arr);
//rebuild the string
echo implode("-", $ord);
array_map()
将回调应用于给定数组的元素。在内部,它遍历我们的单词填充数组$arr
中的元素,并将函数ucfirst()
应用于每个元素。为您节省几行。
答案 3 :(得分:-1)
编辑#2
这不适用于添加到op的新信息,因为有一个答案,不会更新以反映这一点。
编辑#1
$var = "title-title-title";
$var = str_replace (" ", "_", ucwords (str_replace (" ", "_", $var));
旧的,不工作的
$var = "title-title-title";
$var = implode("-", ucwords (explode("-", $var)));
答案 4 :(得分:-2)
尝试以下方法:
$str='title-title-title';
$s='';
foreach(explode('-',$str) as $si){
$s.= ($s ? "-":"").ucfirst($si);
}
此时 $s
应为Title-Title-Title