PHP preg_replace birden çok kural

0 Cevap php

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'

  1. kural: dönüşler fox içine fux
  2. 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ı?

0 Cevap