Join my Laravel for REST API's course on Udemy 👀

String casing in PHP

December 21, 2021  ‐ 3 min read

Lowercase the whole string

In order to lowercase a PHP string you need the strtolower() function. It takes a string as a parameter and returns the lowercase result of the string passed as a parameter.

See the following example:

<?php

$nl = strtolower('The Netherlands');
echo $nl;
//-> the netherlands

The result depends on the locale that is set, in the default English locale that is set in "C" some special characters are not lowercased such as the "Ä".

See the docs: strtolower

Uppercase the whole string

To uppercase an entire string you need the PHP function strtoupper(). It takes a string as a parameter and returns the lowercase result of the string passed as a parameter.

See the following example:

<?php

$nl = strtoupper('The Netherlands');
echo $nl;
//-> THE NETHERLANDS

See the docs: strtoupper

Uppercase the first letter of a string

Besides functions that work on the entire string PHP provides functions that work on just a substring of the string that is passed as a parameter, one of them is the ucfirst() function (short for uppercase the first letter).

See the following example:

<?php

$nl = ucfirst('the netherlands');
echo $nl;
//-> The netherlands

You should keep in mind that this function only changes the case of the first letter in a string. So take a look at the following example:

<?php

$nl = ucfirst('THE NETHERLANDS');
echo $nl;
//-> THE NETHERLANDS

So in order to only have the first letter uppercased it might be preferable, depending on the strings you expect, to combine ucfirst() with strtolower() as the following example demonstrates:

<?php

$nl = ucfirst(strtolower('THE NETHERLANDS'));
echo $nl;
//-> The netherlands

See the docs: ucfirst

Uppercase the first letter of each word

Besides upper casing the first letter of a string you can uppercase the first character of each word in a string with ucwords().

<?php

$nl = ucwords('the netherlands');
echo $nl;
//-> The Netherlands

Just as with ucfirst() only the casing of the first letters are changed. Other letters that are already uppercased maintain their casing. So in order to only have the first letter uppercased it might be safer to combine ucwords() with strtolower().

<?php

$nl = ucwords(strtolower('THE NETHERLANDS'));
echo $nl;
//-> The Netherlands

What the ucwords function considers words is determined by the value of a second parameter to this function. This second parameter sets the characters that are considered word separators, meaning that the characters in a string after such a character are considered to be a different word.

The default value of this separator parameter is set to " \t\r\n\f\v", notice the space in there as well. The other values are in order the escape sequences of the: horizontal tab, carriage return, newline, form-feed and vertical tab.

We can overwrite this second parameter as follows:

<?php

$nl = ucwords('the-netherlands');
echo $nl;
//-> The-netherlands
$nl = ucwords('the-netherlands', '-');
echo $nl;
//-> The-Netherlands

See the docs: ucwords