Why str_replace is not replacing correctly

前端 未结 2 817
不知归路
不知归路 2021-01-24 00:29

Here is my script

$searchArray = array(\"Coupon Codes\", \"Coupon Code\", \"Promo\", \"Promo Codes\");

$replaceArray = array(\"Promo Code\", \"Promo Codes\", \"         


        
2条回答
  •  心在旅途
    2021-01-24 00:58

    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
    

提交回复
热议问题