php
  • preg-replace
  • ksort
  • 2012-03-25 5 views 0 likes 
    0

    J'ai un tel code pour la Lituanie declension:Comment remplacer les valeurs mêmes de différentes manières en PHP

    <?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); 
    ?> 
    

    Comment aurais-je remplacer de manière différente? Je voudrais avoir un tel résultat: namas namo namui nama Mais partout j'ai "namo namo namo".

    Répondre

    0

    Ceci fait ce que je pense que vous voulez:

    <?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); 
    } 
    
    ?> 
    

    Il est en outre simplifié comme:

    <?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); 
    } 
    
    ?> 
    
    +0

    Merci beaucoup! Cela fonctionne d'une manière que je voulais. – zmogusnamas

    0

    Penser comme une boucle,

    1. changement as à as et la chaîne est devenue 'namas NAMA NAMA namas'
    2. changement as à o et la chaîne est devenue ' namo namo namo namo '
    3. changement as à ui et pas de match ('Namo Namo Namo Namo' reste)
    4. changement as à o et pas de match ('Namo Namo Namo Namo' reste)
    +0

    Désolé, il y avait une petite erreur. Mon but est de créer un paradigme de déclinaison avec quelques cas. Il doit y avoir aussi génitif que datif et ainsi de suite. De cette façon, j'ai essayé de remplacer "se terminant". – zmogusnamas

    +0

    ok, @wallyk corrigé le code. Jetez un oeil – safarov

    Questions connexes