How to Get All Substrings of a Given String in PHP ?
Last Updated :
08 Jul, 2024
Extracting all possible substrings from a given string is a common task in text processing, pattern recognition, and various other applications in PHP programming. This operation involves generating every possible combination of characters present in the string, including both contiguous and non-contiguous sequences.
A substring is any continuous sequence of characters within a string. For a string of length n, the number of possible substrings is n(n + 1)/2, not counting the empty string. This concept is crucial in many domains, including search operations, data analysis, and when implementing algorithms that process text data.
Here are some common approaches:
Approach 1: Nested Loops for Contiguous Substrings
The basic method to get all contiguous substrings of a string is by using nested loops. The outer loop iterates through each character in the string as a starting point, and the inner loop generates substrings starting from the outer loop's current position.
PHP
<?php
function getAllSubstrings($string) {
$substrings = [];
$length = strlen($string);
for ($i = 0; $i < $length; $i++) {
for ($j = $i; $j < $length; $j++) {
$substrings[] = substr($string, $i, $j - $i + 1);
}
}
return $substrings;
}
// Driver code
$string = "abc";
$substrings = getAllSubstrings($string);
echo "All substrings of '$string':\n";
print_r($substrings);
?>
OutputAll substrings of 'abc':
Array
(
[0] => a
[1] => ab
[2] => abc
[3] => b
[4] => bc
[5] => c
)
Approach 2: Bitmasking for All Subsequences
To include both contiguous and non-contiguous substrings (subsequences), you can use a more advanced technique involving bitmasking. This method represents each substring as a binary number, where each bit determines whether a character at a certain position is included in the substring.
PHP
<?php
function getAllSubstrings($string) {
$subsequences = [];
$length = strlen($string);
$total = 1 << $length;
for ($i = 0; $i < $total; $i++) {
$subseq = '';
for ($j = 0; $j < $length; $j++) {
if ($i & (1 << $j)) {
$subseq .= $string[$j];
}
}
if (!empty($subseq)) {
$subsequences[] = $subseq;
}
}
return $subsequences;
}
// Driver code
$string = "abc";
$substrings = getAllSubstrings($string);
echo "All substrings of '$string':\n";
print_r($substrings);
?>
OutputAll substrings of 'abc':
Array
(
[0] => a
[1] => b
[2] => ab
[3] => c
[4] => ac
[5] => bc
[6] => abc
)
Approach 3: Using Recursion for Non-Contiguous Substrings
Another method to generate all possible substrings, including both contiguous and non-contiguous sequences, is through recursion. This approach involves recursively including or excluding each character in the string to form substrings.
Example: This recursive approach is elegant and straightforward, especially for generating all possible combinations of substrings, including non-contiguous ones, making it suitable for various text processing and algorithmic tasks.
PHP
<?php
function generateSubstrings($str)
{
$result = [];
$current = "";
generateSubstringsRecursively($str, $current, 0, $result);
return $result;
}
function generateSubstringsRecursively($str, $current, $index, &$result)
{
if ($index == strlen($str)) {
if ($current != "") {
$result[] = $current;
}
return;
}
// Include the current character
generateSubstringsRecursively(
$str,
$current . $str[$index],
$index + 1,
$result
);
// Exclude the current character
generateSubstringsRecursively($str, $current, $index + 1, $result);
}
$str = "abc";
$substrings = generateSubstrings($str);
print_r($substrings);
?>
OutputArray
(
[0] => abc
[1] => ab
[2] => ac
[3] => a
[4] => bc
[5] => b
[6] => c
)
Similar Reads
How to get a substring between two strings in PHP? To get a substring between two strings there are few popular ways to do so. Below the procedures are explained with the example.Examples: Input:$string="hey, How are you?"If we need to extract the substring between "How" and "you" then the output should be are Output:"Are"Input:Hey, Welcome to Geeks
4 min read
How to check if a String Contains a Substring in PHP ? Checking whether a string contains a specific substring is a common task in PHP. Whether you're parsing user input, filtering content, or building search functionality, substring checking plays a crucial role.MethodsBelow are the following methods by which we can check if a string contains a substri
1 min read
PHP to check substring in a string In this article, we will see how to check the substring in a string. We are given two strings & we have to check whether the second string is a substring of the first string or not using PHP built-in strpos() function. This function is case-sensitive, which means that it treats upper-case and lo
2 min read
How to get the position of character in a string in PHP ? In this article, we will get the position of the character in the given string in PHP. String is a set of characters. We will get the position of the character in a string by using strpos() function. Syntax: strpos(string, character, start_pos) Parameters: string (mandatory): This parameter refers t
2 min read
How to get the last character of a string in PHP ? In this article, we will find the last character of a string in PHP. The last character can be found using the following methods.Using array() Method: In this method, we will find the length of the string, then print the value of (length-1). For example, if the string is "Akshit" Its length is 6, in
2 min read
How to read each character of a string in PHP ? A string is a sequence of characters. It may contain integers or even special symbols. Every character in a string is stored at a unique position represented by a unique index value. Here are some approaches to read each character of a string in PHPTable of ContentUsing str_split() method - The str_
4 min read