The reason for your unexpected result is that str_replace
will first replace "Coupon Codes" with "Promo Code" and then it will later substitute "Promo" with "Coupons". To work around this, use the array form of strtr
, which will process the longest strings first, but most importantly will not substitute into any previously substituted text. e.g.
$searchArray = array("Coupon Codes", "Coupon Code", "Promo", "Promo Codes");
$replaceArray = array("Promo Code", "Promo Codes", "Coupons", "Coupon Code");
$intoString = "Best Buy Coupon Codes";
// this doesn't work
echo str_replace($searchArray, $replaceArray, $intoString);
// this does
echo strtr($intoString, array_combine($searchArray, $replaceArray));
Output:
Best Buy Coupons Code
Best Buy Promo Code
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…