用php的第一个字母大写

时间:2014-12-02 08:52:48

标签: php string codeigniter

如何将以下示例转换为大写:

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');

5 个答案:

答案 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)

Demo

不像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