The str_replace function
- The str_replace function of PHP is used to replace a string with the replacement string.
- PHP str_replace function is case-sensitive.
- If you want to perform case-insensitive replacements then use the str_ireplace function (see the last example in this tutorial).
- First, have a look at the str_replace syntax and examples below.
Syntax of using the str_replace function
This is how you may use the str_replace function:
Where:
Parameter | Description |
search_string |
|
replace_with | The replace_with is the string you want to replace with a searched string. There, you may also use arrays for specifying multiple terms. |
$source_string | The $source_string is the string you want to perform an action. |
$count | The $count is an optional parameter that if you pass, it will be set to the total replacements done.
Note that, it does not limit the number of replacements. |
An example of using the PHP str_replace function
In this example, a simple string is created which is assigned to a variable. The string is:
After that, the str_replace function is used to replace the word “str_replace” with “String replacement”.
This is how it is done:
<?php $str_rep = "A tutorial for learning str_replace function in PHP!"; echo str_replace("str_replace","String replacement",$str_rep); ?>
Output:
An example of using the HTML tag to highlight replacements
- In this example, a string is created where the word “is” is used three times.
- In the str_replace function, an HTML <span> tag is added with background color in <style> section, so the replaced words will be highlighted after executing the string replace function.
- See the example online by clicking the link below:
Online demo and code
This is how the string replacement is done:
<?php $src_rep = ("That is A test sentence for str_replace. </br>That is A test sentence for str_replace. </br>That is A test sentence for str_replace."); $count = 1; echo str_replace("is","<span>was</span>",$src_rep,$count); ?>
You can see the complete code including markup and CSS in the demo page.
An example of using count to get total replacements
In certain scenarios, it may be useful to get how many replacements are done by using the str_replace function.
In this example, I am using the same code as above, except, passing a variable to get the total count of the replacements.
The last line in the output will show the number:
The code:
<!doctype html> <html> <head> <style> .divcls { background: #400000; height: auto; width:290px; border-radius: 15px; padding:20px; font-size:17px; color:#fff; } span{ background: #FA4238; } </style> </head> <body> <div class="divcls"><h3> A demo of string replace in PHP:</h3><br /><br /> < ?php $src_rep = ("That is A test sentence for str_replace. </br>That is A test sentence for str_replace. </br>That is A test sentence for str_replace.<BR><BR><BR>"); echo str_replace("is","<span>was</span>",$src_rep,$count); echo "Total number of replacements = " .$count; ?> </div> </body> </html>
Output:
This is how the count parameter is used in the function:
This got the value of total replacements after the PHP string replace function is executed. The $count value is displayed by using the echo statement, which is 3.
Specifying an array as needle to replace a string
- In some situations, you may need to specify two or more different search terms or needles to replace the target string.
- You may do that by using an array in str_replace function.
- In this example, an array of two elements is created.
- The array is used in the string replace method as search string or needle:
Online demo and code
This is how the array was created and used in the function:
$arr_repl = array("This", "function"); $source_string= "This is a replace string tutorial by using str_replace function."; $str_replaced = str_replace($arr_repl, "that", $source_string);
You see, two words “This” and “function” are replaced by “that” in the target string. However, this is not logical to replace “function” with “that”. It should have its own word to be replaced with.
You may do it by using another array in the replacement_string as shown in the example below.
A demo of using search and replacement arrays in str_replace function
Just extend the above example by creating another array of two elements. This array contains the replacement terms. See the example below:
<!doctype html> <html> <head> <style> .divcls { background: #004000; height: auto; width:290px; border-radius: 15px; padding:20px; font-size:17px; color:#fff; } span{ background: #FA4238; } </style> </head> <body> <div class="divcls"><h3> A demo of string replace in PHP</h3><br /><br /> < ?php $arr_needle = array("This", "function"); $arr_replace = array("That", "method"); $source_string= "This is a replace string tutorial by using str_replace function."; $str_replaced = str_replace($arr_needle, $arr_replace, $source_string); echo "The source string: <BR>" .$source_string ."<BR><BR><BR>"; echo "The replaced string: <BR>" .$str_replaced; ?> </div> </body> </html>
Output:
You see, the first array, which specifies the search terms in the given string is replaced by the second array elements that are specified in the “replacement string” parameter.
PHP’s str_replace is a case-sensitive function?
As mentioned earlier, the PHP str_replace is a case-sensitive function. So “This” has different meanings than “this” while performing replacement by using the str_replace function.
See the following example:
Online demo and code
In the source string, the word “test” is used with different cases. In the str_replace function, the word “Test” is searched, and “TEST” is given as the replacement term:
You can see that the output is the replacement string where only “Test” occurrence is modified. The word “test” did not change.
Performing case-insensitive replacement by using str_ireplace function
The only difference is the str_ireplace is the case-insensitive version of the str_replace function.
Using the same example as above with str_ireplace function, see the output:
Online demo and code
This is how the str_ireplace is used:
$source_string = ("This Is A Test Sentence With Titlecase </br>this is a test sentence with small letters. </br>This Is A Test Sentence With Titlecase </br>this is a test sentence with small letters."); $str_replaced = str_ireplace("Test", "<span>TEST</span>", $source_string); echo "The source string: <BR>" .$source_string ."<BR><BR><BR>"; echo "The replaced string: <BR>" .$str_replaced;
In the output, you can see that all occurrences of the word “test” are replaced by “TEST”.
An example of user selected values from HTML dropdowns
In this example, two HTML dropdowns are created with pre-defined values. The first is for selecting the search term or needle in the target string. The other is for choosing the replacement term in the destinated string.
After selecting two related values e.g.
Search term / needle = function Replacement term = method
Press the button to execute the str_replace function of PHP. The values will be submitted by using the “post” method in <form> tag and will be assigned to variables by using $_POST associative array.
The str_replace function will execute and perform the replacement as shown in the example below:
Online demo and code
You see, the source and replaced strings are shown in the paragraph tags. This is how the markup and PHP code is used in the example.
The markup for the <form> tag:
<form method="post" target=""> <div class="divcls"><p>A demo with user selected terms</p> <p><label>Replace Term: </label><select name="searchstr"> <option value="targetted">targetted</option> <option value="search term">search term</option> <option value="function">function</option> </select> </p> <p> <label>To be Replaced with: </label><select name="replacestr"> <option value="destinated">destinated</option> <option value="needle">needle</option> <option value="method">method</option> </select> </p> <p><input type="submit" class="btncls" value="Execute str_replace function"></p> </div> <p class="srcstring"><strong>The source string<br /><br /></strong> The str_replace method is used to perform replacement in targetted string by the given search term.<br> The str_replace is case-sensitive function. </p> </div> </form>
The PHP code to execute the str_replace function:
$search_string=$_POST["searchstr"]; $replace_string=$_POST["replacestr"]; $source_string = ("The str_replace method is used to perform replacement in targetted string by the given search term.<br> The str_replace is case-sensitive function."); if ($search_string != ""){ $str_replaced = str_ireplace($search_string, "<span>" .$replace_string ."</span>", $source_string); // echo "The source string: <BR>" .$source_string ."<BR><BR><BR>"; echo "<p class='replaced_string'><strong>The replaced string: <br /><br /></strong>" .$str_replaced . "</p>"; }
Similarly, you may use textboxes or dropdowns with larger lists in some other way to allow users to replace specific terms if you ever come across this type of scenario.