How to remove all spaces from a String in PHP
  John Mwaniki /   17 Dec 2021

How to remove all spaces from a String in PHP

Given that you have a string of text in PHP and the task at hand is to remove spaces from it, this article explains through simple steps, the different ways in which you can achieve it. In it, I will demonstrate with aid of multiple examples.

The scope of this article revolves around:

  • Removing spaces at the ends of the string.
  • Removing all the regular spaces from a string.
  • Removing all the white spaces from a string.

But before we explore each of the above, it is important to note that not all spaces are the same. There are different types of spaces that can be present in strings, most of which are written as escape sequences. Let's have a look at them in the table below.

Space character Description
" " Ordinary space.
"\t" Horizontal tab
"\n" This is newline (line feed) character. It marks the end of the line for the text that appears before it and makes the text after it to start in a new line.
"\r" This symbol is called a carriage return which means go to the start of the line. It was used together with \n as \r\n to get to the beginning of the next line. This is nowadays rarely used.
"\v" Vertical tab
"\0" Null character

Removing spaces at the ends of the string

Spaces at the beginning or at the end of strings are in most cases added by mistake without even noticing and may result in errors while dealing with strings in your program.

For instance, a typing error may result in two strings, "hello world" and " hello world". It may seem nothing of a big deal but these strings are two totally different things. If you were to do a comparison between the two using either the equal operator == or the identical operator ===, you would notice that they are treated as two totally different strings due to the leading space for the second string.

<?php
$str1 = "hello world";
$str2 = " hello world";
if($str1 === $str2){
 echo "The strings are the same";
}
else{
 echo "The strings are different";
}

Output:

The strings are different

These spaces before and after the string are prone to originate with user inputs in forms. For instance, in registration or login forms, users may add spaces before or after their names, email, phone, etc, even without noticing which may result in errors.

It is therefore advisable to trim these inputs before saving them in the database or using them for comparison.

To remove these spaces, we can use the PHP trim(), ltrim() or rtrim() functions.

The trim() function removes whitespace and any other predefined characters from both ends of a string.

Syntax

trim(string,charlist)

Parameters

Parameter Requirement Description
string Required Specifies the string in which we want to trim
charlist Optional Specifies which characters you want to be removed from the ends of the string. If omitted, all the space characters are removed (refer to the space characters table at the top).

Example

<?php
$str = " Hello world! ";
$length1 = strlen($str);

$str = trim($str);
$length2 = strlen($str);

echo "Initial string length: $length1";
echo "<br>";
echo "Length after trim: $length2";

Output:

Initial string length: 14
Length after trim: 12

Initially, we had the string with a space at the beginning, and another at the end. We then trimmed it and removed the two spaces. Since if we were to print/echo the string before and after trimming on the screen, you wouldn't easily notice the difference, I have used the string length as the way of confirmation.

Initially, our string had a length of 14 characters. After removing the two spaces and checking the length again, you will notice that it has been reduced  2 characters after trimming.

Example 2

<?php
$str1 = "\tHello world! ";
$length1 = strlen($str);

$str2 = trim($str1, " \t");
$length2 = strlen($str2);

echo "String1 length: $length1";
echo "<br>";
echo "String2 length: $length2";

Output:

String1 length: 14
String2 length: 12

In this example we have specified in the second parameter that we want to remove the " " and "\t" characters.

The ltrim() and rtrim() functions are the same to the trim() function, only that they specify one specific side in which the trim should happen instead of both ends.

ltrim() - Removes whitespace or other predefined characters from the left side of a string.

rtrim() - Removes whitespace or other predefined characters from the right side of a string.

Removing all the regular spaces.

To remove all the spaces in between words or characters in a string to remain with a compact block of text, use the str_replace() function.

The str_replace() function is an inbuilt PHP function used to replace all the occurrences of some characters with other characters in a string.

Syntax

str_replace(find,replace,string,count)

Parameters

Parameter Requirement Description
find Required Specifies the text or characters we want to replace.
replace Required Specifies the character or text to replace the match with.
string Required Specifies the string that contains the text of characters to be replaced.
count Optional This parameter is a variable that stores the count of all replacements that have happened after the function has been executed.

All we have to do is use the function to replace all the instances of regular space (" ") with an empty string "".

Example

<?php
$str = "Hello to you! How are you today?";
echo str_replace(" ", "", $str);

Output:

Hellotoyou!Howareyoutoday?

This method is best for regular spaces. These are spaces that appear regularly in between words in a string (ie. " "), inserted by pressing the keyboard space bar.

To remove all whitespaces, it's advisable to use the preg_replace() function as covered below.

Removing all the whitespace characters.

Regular space is different from whitespace. While regular space is just the ordinary space " ", whitespace comprise of all types of spaces including regular space, tabs, newlines, etc, as listed in the space characters' table.

The str_replace() function is the best for removal for just regular spaces. On the other hand, preg_replace() function is the best for removing all whitespace in a string.

The preg_replace() function replaces all matches of a pattern or list of patterns within a string with substrings.

Syntax

preg_replace(pattern, replacement, input, limit, count)

Parameters

Parameter Requirement Description
pattern Required Consists of a regular expression or an array of regular expressions.
replacement Required This consists of a replacement string or an array of replacement strings.
input Required This is the string or array of strings in which replacements are to be done.
limit Optional This sets a limit on how many replacements should be done in each string.
count Optional This parameter is a variable that contains the number of replacements that have happened after the function has been executed.

The pattern comprises of the word or character to be replaced enclosed within an opening and closing forward slash /word, phrase, or character/.

In our case, we use \s character as the value in the pattern parameter and an empty string "" as the replacement.

But why "\s" and not anything else, you may wonder. \s is the escape sequence for space and whitespace characters. It matches any whitespace character and is equivalent to [ \t\n\r\f\v] or [[:space:]].

Therefore, our pattern becomes "/\s/".

Example

A string with different types of whitespace.

<?php
$string = "My name is John.\n\tI love programming.\n\n\t\tI like programming in PHP.";
echo $string;

Output:

My name is John.
 I love programming.

  I like programming in PHP.

In the above example, \t represents the tab character, whereas \n represents the newline character.

Example 2

Removing all the white space with preg_replace() function.

<?php
$string = "My name is John.\n\tI love programming.\n\n\t\tI like programming in PHP.";
$string = preg_replace("/\s/", "", $string);
echo $string;

Output:

MynameisJohn.Iloveprogramming.IlikeprogramminginPHP.

Example 3

<?php
$str = <<<WEBDEV
My name is John.
I love programming.
I like programming in PHP.
WEBDEV;
echo preg_replace("/\s/", "", $str);

Output:

MynameisJohn.Iloveprogramming.IlikeprogramminginPHP.