...
/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.
We'll cover the following...
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.
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.
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 ...