There is an earlier question where I have already suggested mb_convert_case()
, but the sample text in that question is rather lackluster.
There is a single, native function that performs title-casing on multiple words in a string and it is multibyte-safe. This is an excellent solution because you don't need to prepare the string to be all lowercase before making the leading letter of all words uppercase.
Code: (Demo)
$string = "tHis iS a StRinG thAt NeEds ProPer CapiTilization";
echo mb_convert_case($string, MB_CASE_TITLE, 'UTF-8');
Output:
This Is A String That Needs Proper Capitilization
Laravel also offers a helper method that can be used: title()
.
use Illuminate\Support\Str;
$converted = Str::of('a nice title uses the correct case')->title();
// A Nice Title Uses The Correct Case
Source: https://laravel.com/docs/8.x/helpers#method-fluent-str-title