PHP を使用して、サンスクリット語のコーディングを行っています。ルールの例を示します: ルールは、$kantha-$talu-$murdha が同じ順序で表示される場合、$talu はオプションで複製されます。例 aif -> aiif。次のスクリプトは、そのような発生が 1 つしかない場合の出力を示します。ただし、文字列にそのような出現が複数ある場合、スクリプトは失敗します。例: $text = "aifkcw" 次のスクリプトは "aiifkccw" のみを返します。
ここでは、任意性のために、4 つの望ましい結果があるはずです。「aifkcw」 - 変更なし。"aiifkcw" - 最初のオカレンスが複製され、2 番目のオカレンスは変更されません。"aifkccw" - 2 番目のオカレンスが複製され、最初のオカレンスは変更されません。「aiifkccw」 - 両方のオカレンスが重複しています。
正規表現も試しましたが、役に立ちませんでした。任意の助けをいただければ幸いです。
<?php
$kantha = array("a","A","k","K","g","G","N","h","H");
$talu = array("i","I","c","C","j","J","Y","y","S");
$murdha = array("f","F","w","W","q","Q","R","r","z");
$text = "aifkcw";
echo $text."</br>";
for($i=0;$i<count($kantha);$i++)
{
for($j=0;$j<count($talu);$j++)
{
for($k=0;$k<count($murdha);$k++)
{
$text = str_replace($kantha[$i].$talu[$i].$murdha[$i],$kantha[$i].$talu[$j].$talu[$j].$murdha[$k],$text);
}
}
}
echo $text."</br>";
?>