Ben sadece ilk dönemde bunları yürütme olmadan preg_replace için çeşitli kuralları uygulamak için nasıl merak ediyorum. Karmaşık onun biraz bana bir örnek dayalı anlatalım.
Input:
$string = 'The quick brown fox jumps over the lazy freaky dog';
Rules:
- Bir kelimenin başında ve bir harften sonra / değilse önce a, i, o u ile değiştirin (eğer )
- e, u i ile değiştirin (eğer bir kelimenin başında & değilse önce / a harften sonra)
- (A kelimenin başında değilse) ea i ile değiştirin
- Ile cat ve fox ile bütün kelimeleri yani dog olarak değiştirin wolf (yukarıdaki kuralları uygulayarak olmadan)
Output: Thi quick bruwn wolf jimps over thi luzy friky cat
I started with something like that: (Edited thanks to 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);
Output:
Thi qiick briwn fix jimps ivir thi lizy friiky dig
Edited:
Gördüğünüz gibi sorun olduğunu every rule gets overwritten by the previous rule.
ÖRNEK 'fox'
- kural: dönüşler fox içine fux
- kural: dönüşler fux içine fix
Karakter zaten önceki kural ile etkilendiği ise şu kural (lar) önlemek için bir yolu var mı?
Bu mantıklı mı?