PHP Substring Function Syntax

In the realm of PHP programming, the substr() function is a key element that significantly improves the way we handle strings. It allows developers to extract specific portions of a string, which is a common requirement in many coding scenarios. This functionality is not just about slicing strings; it plays a crucial role in optimizing the performance of PHP applications. Programmers can streamline their code, leading to faster execution times and a more efficient use of resources. This, in turn, contributes to a smoother overall operation of applications, enhancing the experience for end-users. In essence, it is more than a simple string manipulation tool; it’s an essential component that enhances the effectiveness and efficiency of PHP programming.

If you’re finding the PHP substring functions useful, you may also like exploring how the array_map function in PHP offers similarly powerful tools for efficiently manipulating arrays.

PHP’s substr() Function

This function in PHP is designed to retrieve a specific portion of a string.

Let’s explore the structure of the function:

substr ( string $string , int $offset , int|null $length = null ) : string

Here’s what each parameter means:

  • $sourceString: The original string from which you want to extract the substring;
  • $startPosition: Indicates the starting point for substring extraction;
  • $substringLength: Specifies how many characters should be included in the resulting substring;
  • Return Value: The substr() function returns a section of the $sourceString from the $startPosition to its end if $substringLength is omitted.

If $substringLength is 0, false, or null, the substr() function yields an empty string as the result.

PHP’s substr() Function: Practical Examples

Dive into practical applications of PHP’s substr() function with these examples.

Example 1: Basic Usage of PHP’s substr() Function

In our first scenario, we employ a function to isolate the initial three characters of a given string:

<?php

$s = 'PHP substring';
$result = substr($s, 0, 3); 

echo $result;// PHP

This snippet demonstrates extracting a substring that begins at the zero index and spans three characters.

Example 2: PHP’s substr() Function Without a Specified Length

Man coding on a laptop in a home office setting

Now, let’s demonstrate the utilization of this function to obtain a substring beginning at a chosen index without defining the extent of characters to include. When used this way, the function outputs the segment of the string that starts at the given index and proceeds to its end:

<?php

$s = 'PHP substring';
$result = substr($s, 4);

echo $result; // substring

In this example, omitting the length argument directs the substr() function to extract and return the part of the string starting from the fifth character (since the index is zero-based) all the way to the string’s last character.

Negative Offset in PHP’s substr() Function

The substr() function in PHP is versatile enough to allow reverse string manipulation by accepting a negative value for the starting index.

This is how the negative starting index operates:

A negative $startIndex in the substr() function signals it to initiate the substring extraction that number of characters from the string’s conclusion, counting backwards. Here, the final character of the string is indexed as -1.

Consider the following illustration of the substr() function with a negative starting index:

<?php

$s = 'PHP is cool';
$result = substr($s, -4);

echo $result; // cool

In this instance, substr() retrieves the substring beginning four characters from the end of the string, effectively capturing the last four characters.

Negative Length Parameter in PHP’s substr() Function

PHP’s substr() function is quite versatile, accepting negative values for its length parameter.

When the $length parameter is set to a negative value, substr() excludes that many characters from the end of the resulting substring.

Below is an example that combines negative $offset and $length parameters:

<?php

$s = 'PHP is cool';
$result = substr($s, -7, -5);

echo $result; // is

This code extracts a substring starting seven characters from the end of $phrase and stops five characters before the end, effectively capturing the word “is”.

PHP’s mb_substr() for Multibyte Strings

Cartoon of a woman working at a dual-monitor computer desk

When working with strings containing multibyte characters, such as ‘adiós’, a regular substr() function may not yield the expected results. This is because it is not equipped to handle the complexities of multibyte characters, often found in UTF-8 encoded strings.

Take this example:

<?php

$message = 'adiós';
$result = substr($message, 3, 1);

echo $result;

This scenario illustrates an effort to pull out a single character from the $message string, beginning at its third position. Unfortunately, this action yields no visible result.

The problem arises due to a non-ASCII character within the $message string, causing interference with the typical functioning of the substr() function.

For the proper extraction of substrings from strings containing non-ASCII characters, the recommended solution is to use the mb_substr() function. This function works similarly to substr() but includes an additional parameter for specifying the encoding:

mb_substr(string $string, int $start, int|null $length = null, string|null $encoding = null): string

In our forthcoming example, we will proficiently utilize the mb_substr() function to extract a substring from a string that contains non-ASCII characters.

<?php

$message = 'adiós';
$result = mb_substr($message, 3, 1);

echo $result;

Result:

ó

The code below defines a helper function that utilizes the mb_substr() function to extract a substring from a given string:

<?php

function substring($string, $start, $length = null)
{
	return mb_substr($string, $start, $length, 'UTF-8');
}

Conclusion 

PHP’s substr() function is adept at slicing segments from a string, and it includes a distinctive attribute that permits starting the slice from the end of the string, using negative values to count backward with the final character labeled as -1. It also allows for the specification of a negative length, which then subtracts characters from the conclusion of the substring being extracted. When dealing with strings that include non-ASCII characters, the mb_substr() function becomes essential, as it is designed to handle multi-byte characters, thus ensuring precision in substring manipulation within such contexts.