5

我有一个大小写不正确的字符串,如下所示:

$str = "tHis iS a StRinG thAt NeEds ProPer CapiTilization";
$newStr = ucfirst($str);
echo $newStr;

我如何能够将每个单词的第一个字母大写并将错误大写的字母小写?我需要字符串完全是标题大小写。

我知道我可以更改为降低然后使用ucwords(),但是有没有更短的方法可以做到这一点?

4

3 回答 3

7

我如何能够将每个单词的第一个字母大写并将错误大写的字母小写?

ucwords()将大写每个单词的第一个字母。您可以将其与strtolower()第一个小写所有内容结合使用。

例如:

ucwords(strtolower('HELLO WORLD!')); // Hello World!
于 2015-09-14T12:15:55.587 回答
1

已经提出了一个较早的问题mb_convert_case(),但是该问题中的示例文本相当乏味。

有一个本地函数可以对字符串中的多个单词执行标题大小写,并且它是多字节安全的。这是一个很好的解决方案,因为在将所有单词的前导字母变为大写之前,您无需将字符串准备为全部小写。

代码:(演示

$string = "tHis iS a StRinG thAt NeEds ProPer CapiTilization";
echo mb_convert_case($string, MB_CASE_TITLE, 'UTF-8');

输出:

This Is A String That Needs Proper Capitilization

Laravel 还提供了一个可以使用的辅助方法:title().

use Illuminate\Support\Str;

$converted = Str::of('a nice title uses the correct case')->title();

// A Nice Title Uses The Correct Case

来源:https ://laravel.com/docs/8.x/helpers#method-fluent-str-title

于 2021-08-13T07:33:37.757 回答
0

是的,您可以使用两个函数ucwords()strtolower()

<?php
    $str = "tHis iS a StRinG thAt NeEds ProPer CapiTilization";
    $newStr = ucwords(strtolower($str));
    echo $newStr;
?>

解释:

strtolower()将使您的所有字符串小写。

现在,应用ucwords()结果字符串将使每个世界首都的第一个字母产生所需的输出。

于 2015-09-14T12:16:22.793 回答