PHP replace multiple value using str_replace?
The solution
As you can see m
gets replaced with Month
, and h
in Month
gets replaced with Hours
and the s
in Hours
gets replaced with Seconds
. The problem is that when you’re replacing h
in Month
, you’re doing it regardless of whether the string Month
represents what was originally Month
or what was originally an m
. Each str_replace()
is discarding some information — what the original string was.
$key = 'm'; $search = ['y', 'm', 'd', 'h', 'i', 's']; $replace = ['Year', 'Month', 'Days', 'Hours', 'Munites', 'Seconds']; $replacePairs = array_combine($search, $replace); echo strtr($key, $replacePairs); // => Month