如何在PHP中以不同的方式替换相同的值

如何在PHP中以不同的方式替换相同的值,php,preg-replace,ksort,Php,Preg Replace,Ksort,我有一个立陶宛语变弱的代码: <?php $word = "namas"; $string = str_repeat("$word ", 4); $patterns = array(); $patterns[0] = '/as/'; $patterns[1] = '/as/'; $patterns[2] = '/as/';

我有一个立陶宛语变弱的代码:

<?php
    $word               = "namas";
    $string             = str_repeat("$word ", 4);
    $patterns           = array();
    $patterns[0]        = '/as/';
    $patterns[1]        = '/as/';
    $patterns[2]        = '/as/';
    $patterns[3]        = '/as/';
    $replacements       = array();
    $replacements[0]    = 'as';
    $replacements[1]    = 'o';
    $replacements[2]    = 'ui';
    $replacements[3]    = 'a';
    ksort($patterns);
    ksort($replacements);
    echo preg_replace($patterns, $replacements, $string);
?>

如何以不同的方式进行替换?我希望得到这样的结果: namas-namo-namui-nama 但我到处都有“纳摩纳摩”

像循环一样思考

  • 更改为
    ,字符串变为“namas namas namas namas”
  • 更改为
    ,字符串变成'namo namo namo namo'
  • 更改为
    ui
    并且没有匹配('namo namo namo'保留)
  • 更改为
    ,但没有匹配('namo namo namo namo'保留)

  • 这正是我认为您想要的:

    <?php
    $word ="namas";
    $patterns = array();
    $patterns[0] = '/as/';
    $patterns[1] = '/as/';
    $patterns[2] = '/as/';
    $patterns[3] = '/as/';
    
    $replacements = array();
    $replacements[0] = 'as';
    $replacements[1] = 'o';
    $replacements[2] = 'ui';
    $replacements[3] = 'a';
    
    ksort($patterns);
    ksort($replacements);
    
    foreach ($patterns as $idx => $pat)
    {
        echo " " . preg_replace ($pat, $replacements[$idx], $word);
    }
    
    ?>
    
    
    
    进一步简化为:

    <?php
    $word ="namas";
    $pattern = '/as/';
    
    $replacements = array();
    $replacements[0] = 'as';
    $replacements[1] = 'o';
    $replacements[2] = 'ui';
    $replacements[3] = 'a';
    
    foreach ($replacements as $replace)
    {
        echo " " . preg_replace ($pattern, $replace, $word);
    }
    
    ?>  
    

    对不起,有点小错误。我的观点是通过一些案例来创建一个倾斜的范例。一定有和格一样的属格词等等。就这样,我试着替换“结束”。