str_ireplace

Description

This function returns a string or an array with all occurrences of
search in subject
(ignoring case) replaced with the given replace
value. If you don't need fancy replacing rules, you should generally
use this function instead of
preg_replace() with the i modifier.

Parameters

If search and replace are
arrays, then str_ireplace() takes a value from each
array and uses them to search and replace on
subject. If replace has fewer
values than search, then an empty string is used for
the rest of replacement values. If search is an
array and replace is a string, then this replacement
string is used for every value of search. The
converse would not make sense, though.

If search or replace
are arrays, their elements are processed first to last.

search

The value being searched for, otherwise known as the
needle. An array may be used to designate
multiple needles.

replace

The replacement value that replaces found search
values. An array may be used to designate multiple replacements.

subject

The string or array being searched and replaced on,
otherwise known as the haystack.

If subject is an array, then the search and
replace is performed with every entry of
subject, and the return value is an array as
well.

count

If passed, this will be set to the number of replacements performed.

Return Values

Returns a string or an array of replacements.

Examples

Notes

Note: This function is
binary-safe.

Caution

Replacement order gotcha

Because str_ireplace() replaces left to right, it might
replace a previously inserted value when doing multiple replacements.
Example #2 in the str_replace() documentation
demonstrates how this may affect you in practice.

See Also

str_replace() - Replace all occurrences of the search string with the replacement string

User Contributed Notes 11 notes

Here's a different approach to search result keyword highlighting that will match all keyword sub strings in a case insensitive manner and preserve case in the returned text. This solution first grabs all matches within $haystack in a case insensitive manner, and the secondly loops through each of those matched sub strings and applies a case sensitive replace in $haystack. This way each unique (in terms of case) instance of $needle is operated on individually allowing a case sensitive replace to be done in order to preserve the original case of each unique instance of $needle.

If you follow the instructions given here you will end up with code which works in php5.3 but which bugs-out in php5.4. Reason is that '&$count' (explicit pass by reference) is now an illegal construct.Nasty, especially it leads to unreliable code which may work on test but not in production. Manual needs corrected!

The difference between this one and the ones below is that it will preserve the original case of the search term as well. So, if you search for "american" but in the original string it is "American" it will retain the capital "A" as well as the correct case for the rest of the string.