String functions, in general, have been tightened and normalized in PHP 8. We will find that usage is more heavily restricted in PHP 8, which ultimately forces us to produce better code. We can say that the nature and order of string function arguments are much more uniform in PHP 8, which is why we say that the PHP core team has normalized usage.

These improvements are especially evident when dealing with numeric strings. Other changes in PHP 8 string handling involve minor changes to arguments. We introduce the key changes in how PHP 8 handles strings.

It’s important to understand not only the handling improvements introduced in PHP 8 but also to understand the deficiencies in string handling prior to PHP 8.

Let’s first have a look at an aspect of PHP 8 string handling in functions that search for embedded strings.

Handling changes to the needle argument

A number of PHP string functions search for the presence of a substring within a larger string. These functions include strpos(), strrpos(), stripos(), strripos(), strstr(), strchr(), strrchr(), and stristr(). All of these functions have these two parameters in common: the needle and the haystack.

Differentiating between the needle and the haystack

To illustrate the difference between the needle and the haystack, have a look at the function signature for strpos():

Get hands-on with 1200+ tech skills courses.