搜尋

首頁  >  問答  >  主體

避免重複替換字串,僅替換一次

我正在嘗試替換字串,但它像一個循環一樣工作

$especiais = ["b", "c", "k", "g", "j", "d", "f", "a", "e", "m", "i", "y", "h", "l", "p", "q", "n", "x", "o", "r", "z", "u", "v", "w", "s", "t"];

$certo =  ["pn", "veh", "veh", "ged", "ged", "gal", "or", "un", "graph", "tal", "gon", "gon", "na", "ur", "mals", "ger", "drux", "pal", "med", "don", "ceph", "van", "van", "van", "fam", "gisg"];

$resultado = str_replace($especiais, $certo, $phrase);

範例程式碼傳回:OL 傳回 medvanandon

我需要的確切結果是 OL 回傳 MEDUR

我需要每個字母都準確地被對應的字母替換,但在這段程式碼中,替換重複了多次。

P粉257342166P粉257342166485 天前704

全部回覆(1)我來回復

  • P粉021553460

    P粉0215534602023-09-07 00:38:42

    str_replace() PHP文件中有一則通知,內容如下:

    相反,我建議使用strtr(),它允許你以(from => to)的格式傳遞一個「取代」數組,如下面的範例:

    $replace = [
        'b' => 'pn',
        'c' => 'veh',
        'k' => 'veh',
        'g' => 'ged',
        'j' => 'ged',
        'd' => 'gal',
        'f' => 'or',
        'a' => 'un',
        'e' => 'graph',
        'm' => 'tal',
        'i' => 'gon',
        'y' => 'gon',
        'h' => 'na',
        'l' => 'ur',
        'p' => 'mals',
        'q' => 'ger',
        'n' => 'drux',
        'x' => 'pal',
        'o' => 'med',
        'r' => 'don',
        'z' => 'ceph',
        'u' => 'van',
        'v' => 'van',
        'w' => 'van',
        's' => 'fam',
        't' => 'gisg',
    ];
    
    $phrase = 'ol';
    
    echo strtr($phrase, $replace);

    這將提供您期望的輸出,如下所示:

    medur

    示範: https://tehplayground.com/5YSxPYZfreiPTz9K

    #

    回覆
    0
  • 取消回覆