2 Stimmen

PHP preg_replace mehrere Regeln

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 ':

  1. Regel: Drehungen Fuchs in fux
  2. 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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X