Причина вашего неожиданного результата заключается в том, что str_replace
сначала заменит «Коды купонов» на «Промо-код», а затем заменит «Промо» на «Купоны».Чтобы обойти это, используйте форму массива strtr
, которая сначала будет обрабатывать самые длинные строки, но, что наиболее важно, не будет заменять какой-либо ранее замещенный текст.например,
$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));
Выход:
Best Buy Coupons Code
Best Buy Promo Code