how to detect str_replace() has done replacement or not? and how many?

3.2k Views Asked by At

I have two string, something like this:

$str1='this is the first text';
$str2='this is the second text';

Now I use str_replace(); to replace the word of 'first' in the str1 and str2.

For str1: The subject will be found and then will be replaced

str_replace('first','matched',$str1);
// output: this is the matched text

For str2: The subject will not found and str2 does not change.

str_replace('first','matched',$str2);
// output: this is the second text

Now I want to echo:

  • 'matched has been find' for str1

  • 'matched has not been find' for str2.

And also I want to know that is it possible to count the number of matched found? e.g. for str1 is 1.

1

There are 1 best solutions below

5
On BEST ANSWER

There is a fourth count argument to str_replace() that counts the total number of replacements actually made to the string

What it won't do is tell you how many of each replacement if you're doing multiple replacements (using arrays), but it does give you the overall count

EDIT

$str1 = 'this is the first text';
$result1 = str_replace('first','matched',$str1, $counter);
echo $counter, ' replacements were made', PHP_EOL;

$result2 = str_replace('is','**',$str1, $counter);
echo $counter, ' replacements were made', PHP_EOL;