2012-03-25 4 views
0

У меня есть такой код Литвы склонения:Как заменить одни и те же значения, по-разному в 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); 
?> 

Как я мог заменить по-другому? Я бы хотел получить такой результат: namas namo namui nama Но везде у меня есть «намо намо намо».

ответ

0

Это делает то, что вы хотите:

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

?> 
+0

Большое вам спасибо! Это работает так, как я хотел. – zmogusnamas

0

Подумайте, как петля,

  1. изменение as к as и строка стала 'намас намас намас намас'
  2. изменение as к o и строка стала " namo namo namo namo '
  3. изменение as к ui и без матча («намо намо намо намо» остается)
  4. изменение as к o и не ровня («намо намо намо намо» остается)
+0

К сожалению, была небольшая ошибка. Моя задача - создать в некоторых случаях парадигму склонения. Там должен быть родительный падеж и так далее. Таким образом я попытался заменить «окончание». – zmogusnamas

+0

ОК, @wallyk исправил код. посмотрите – safarov

 Смежные вопросы

  • Нет связанных вопросов^_^