最初の実行でそれらを実行せずに preg_replace にいくつかのルールを適用する方法を考えています。少し複雑なので、例に基づいて説明します。
入力:
$string = 'The quick brown fox jumps over the lazy freaky dog';
ルール:
- a、i、oをuに置き換えます(単語の先頭でない場合 & 母音の前後でない場合)
- e、uをiに置き換えます(単語の先頭でない場合 & 母音の前後でない場合)
- eaをiに置き換えます(単語の先頭でない場合)
- 単語全体を置き換えます。つまり、 dogをcatに、foxをwolfに置き換えます(上記のルールを適用せずに)。
出力: 素早く茶色いオオカミが、元気で気難しい猫の上を飛び跳ねる
私はそのようなものから始めました:(Ezequiel Munsのおかげで編集されました)
$patterns = array();
$replacements = array();
$patterns[] = "/(?<!\b|[aeiou])[aio](?![aeiou])/";
$replacements[] = "u";
$patterns[] = "/(?<!\b|[aeiou])[eu](?![aeiou])/";
$replacements[] = "i";
$patterns[] = '/ea/';
$replacements[1] = 'i';
$patterns[] = '/dog/';
$replacements[0] = 'cat';
echo preg_replace($patterns, $replacements, $string);
出力:
Thi qiick briwn fix jimps ivir thi lizy friiky dig
編集:
ご覧のとおり、問題はすべてのルールが前のルールによって上書きされることです。
例「キツネ」:
- ルール:キツネをフックスに変える
- ルール: fuxをfixに変える
キャラクターがすでに前のルールの影響を受けている場合、次のルールを回避する方法はありますか?
これは理にかなっていますか?