benhowdle89
benhowdle89

Reputation: 37464

PHP preg_replace/preg_match vs PHP str_replace

Can anyone give me a quick summary of the differences please?

To my mind, are they both doing the same thing?

Upvotes: 41

Views: 56769

Answers (4)

D.A.H
D.A.H

Reputation: 919

I have not tested by myself, but probably worth of testing. But according to some sources preg_replace is 2x faster on PHP 7 and above.

See more here: preg_replace vs string_replace.

Upvotes: 3

Mārtiņš Briedis
Mārtiņš Briedis

Reputation: 17762

str_replace searches for pure text occurences while preg_replace for patterns.

Upvotes: 5

mingos
mingos

Reputation: 24502

str_replace replaces a specific occurrence of a string, for instance "foo" will only match and replace that: "foo". preg_replace will do regular expression matching, for instance "/f.{2}/" will match and replace "foo", but also "fey", "fir", "fox", "f12", etc.

[EDIT]

See for yourself:

$string = "foo fighters";
$str_replace = str_replace('foo','bar',$string);
$preg_replace = preg_replace('/f.{2}/','bar',$string);
echo 'str_replace: ' . $str_replace . ', preg_replace: ' . $preg_replace;

The output is:

str_replace: bar fighters, preg_replace: bar barhters

:)

Upvotes: 54

Jon
Jon

Reputation: 437376

str_replace will just replace a fixed string with another fixed string, and it will be much faster.

The regular expression functions allow you to search for and replace with a non-fixed pattern called a regular expression. There are many "flavors" of regular expression which are mostly similar but have certain details differ; the one we are talking about here is Perl Compatible Regular Expressions (PCRE).

If they look the same to you, then you should use str_replace.

Upvotes: 21

Related Questions