Ich frage mich nur, wie man mehrere Regeln für ein preg_replace anwenden kann, ohne sie im ersten Durchlauf auszuführen. Es ist ein bisschen kompliziert, lassen Sie mich anhand eines Beispiels erklären.
Eingabe:
$string = 'The quick brown fox jumps over the lazy freaky dog';
Regeln:
- Ersetzen Sie a , i , o mit u (wenn nicht am Anfang eines Wortes & wenn nicht vor/nach einem Vokal)
- Ersetzen Sie e , u mit i (wenn nicht am Anfang eines Wortes & wenn nicht vor/nach einem Vokal)
- Ersetzen Sie ea mit i (wenn nicht am Anfang eines Wortes)
- Ersetzen Sie ganze Wörter, d.h. Hund mit Katze y Fuchs mit wolf (ohne Anwendung der oben genannten Regeln)
Ausgabe: Der flinke Wolf stürzt sich auf die faule Katze
Ich habe mit etwas Ähnlichem angefangen: ( Bearbeitet dank 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);
Ausgabe:
Thi qiick briwn fix jimps ivir thi lizy friiky dig
Bearbeitet:
Wie Sie sehen können, besteht das Problem darin, dass jede Regel wird durch die vorherige Regel überschrieben .
Beispiel ' Fuchs ':
- Regel: Drehungen Fuchs in fux
- Regel: Drehungen fux in reparieren
Gibt es eine Möglichkeit, die folgende(n) Regel(n) zu umgehen, wenn der Charakter bereits von der vorherigen Regel betroffen war?
Ergibt das einen Sinn?