How to replace same values in different ways in PHP
-
26-05-2021 - |
Question
I have a such code for Lithuanian declension:
<?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);
?>
How could I have replacement in different way? I would like to have such result: namas namo namui nama But everywhere I have "namo namo namo".
Solution
This does what I think you want:
<?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);
}
?>
It is further simplified as:
<?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);
}
?>
OTHER TIPS
Think like a loop,
- change
as
toas
and string became 'namas namas namas namas' - change
as
too
and string became 'namo namo namo namo' - change
as
toui
and no match ('namo namo namo namo' remains) - change
as
too
and no match ('namo namo namo namo' remains)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow