...

/

Avoiding Problems with the Updated mbstring Extension

Avoiding Problems with the Updated mbstring Extension

Learn about the new updates introduced in the mbstring extension in PHP 8.

The mbstring extension was first introduced in PHP 4 and has been an active part of the language ever since. The original purpose of this extension was to provide support for the various Japanese character-encoding systems. Since that time, support for a wide variety of other encodings has been added—most notably, support for encodings based upon Universal Coded Character Set 2 (UCS-2), UCS-4, Unicode Transformation Format 8 (UTF-8), UTF-16, UTF-32, Shift Japanese Industrial Standards (SJIS), and International Organization for Standardization 8859 (ISO-8859), among others.

If you aren’t sure which encodings are supported on our server, just run the mb_list_encodings() command, as follows:

Note: Click on the terminal below to get the encodings that are supported in PHP 8.

Terminal 1
Terminal
Loading...

As we can see from the preceding output, in PHP 7.1, 87 encodings are supported. In PHP 8.0 , 85 encodings are supported. Let’s now have a look at the changes introduced in PHP 8, starting with the mb_str*() functions.

Press + to interact

Discovering needle-argument differences in mb_str*() functions

We also learned how PHP 8 introduced changes to needle-argument handling in the core str*pos(), str*str(), and str*chr() functions. The two primary needle-argument differences are the ability to accept an empty needle argument and strict type checking to ensure the needle argument is a string only. In order to maintain consistency, PHP 8 introduces the same changes in the corresponding mb_str*() functions.

Let’s have a look at empty needle-argument handling first.

The mb_str*() function empty needle-argument handling

To keep the mbstring extension in line with this change to the core string functions, the following mbstring extension functions now allow an empty needle argument. It’s important to note that this doesn’t mean the argument can be omitted or is optional! What is meant by this change is that any value supplied as the needle argument can now also include what is considered empty. Here is a list of mbstring functions that now allow an ...