Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

Problem mit preg_replace()?

Hallo,

ich bekomme bei meinem kleinen Scriptelement einen Fehler, den ich nicht korrigiert bekomme. Kann mir da jemand eventuell helfen?

Fehlermeldung lautet: preg_replace() [function.preg-replace]: No ending delimiter [...]

Das entsprechende Scriptelement ist folgendes:

$text = preg_replace(/'ä'/, /'ä'/, $text);

Ich danke im Voraus!

Update:

Ich hätte erwähnen sollen, dass es sich bei meinem Problem um eines mit PHP handelt.

Tut mir leid!

2 Antworten

Bewertung
  • vor 10 Jahren
    Beste Antwort

    Delimiter werden bei regulären Ausdrücken verwendet, um einzugrenzen wann das Suchmuster beginnt und endet. Bei dir gerät die Funktion durcheinander, da du das Suchmuster und die Ersetzung nicht als String übergibst. Mal abgesehen davon, dass das zu ersetzende Textelement und die Ersetzung gleich sind, würde die korrekte Schreibweise folgendermaßen lauten:

    $text = preg_replace("/'ä'/", "/'ä'/", $text);

    ... wenn ich davon ausgehe, dass die ' ' ebenfalls in die Suche einbezogen werden sollen und deine Delimiter die Slashes sind.

  • vor 10 Jahren

    Hi weremaruku,

    welche Programmiersprache(?), vba, C, Java etc. ? In C bist Du an eine sehr sorgfältige Behandlung und Definition der Funktionsvariablen gebunden. Du musst auch lokal eingeführte Variablen im Funktionskopf definieren, auch wenn diese ausschließlich innerhalb der Funktion Verwendung finden sollten.

    Schaue in diesem Fall einmal unter "explicit strict" oder ähnlichen Stichworten in der Dokumentation nach (für den Hauptprogrammkopf) - C++ arbeitet hier mit sehr engen Vorgaben: Alle Variablen und Konstanten müssen irgendwo "explizit" angegeben werden. C++ besitzt hier aufgrund von Kompatibilität sehr enge Vorgaben (...).

    Habe C schon lange nicht mehr benutzt, so dass ich Dich bei Verwendung von C++ auf die entsprechende Dokumentation vereisen muss (sorry), würde Dir sonst gern noch weiter helfen, aber leider bist Du mit Infos etwas sparsam ;)

    Die Fehlermeldung ist leider auch nicht sehrschlüssig - ich verstehe Dein diesbezgl. Problem.

    Offensichtlich versuchst Du Umlaute anders zu kodieren bzw. auszutauschen (?).

    Die Fehlermeldung deutet darauf hin, dass eine Abbruchbedingung der Schleife bzw. der den Durchlauf bestimmenden Parameter fehlen könnte.

    Du solltest überprüfen, wie Du den Durchlauf beendest.

    Die geöffnete Schleife muss auch geschlossen werden.

    Beispielsweise könntest Du Zeichenketten (Strings) zählen und die entsprechende Zählvariable zur Beendigung wählen.

    Welche Art von Schleife verwendest Du. Versuche ggf. anstatt einer evtl. genutzten Zähschleife eine bedingte Schleife und versuche, den Datenzeiger bei Erreichen des Datei- oder Arrayendes (EOF), sprich bei Positionierung auf Deinem letzten Datenlement, ein Argument an die Funktion zurückzugeben, das die Schleife beendet. Evtl. ist es nötig, eine entsprechende (lokale) Variabe am Beginn der Schleife zu initialisieren, die bei EOF o.ä. geändert wird und durch logische Abfrage die Schleife beendet.

    Die einzelne Codezeile ist hier leider nicht ausreichend aussagefähig, da in der Routine, Subroutine oder Funktion weitere Bezüge bestehen.

    Grundsätzlich gill: Du übergibst Werte an die Funktion. Die Funktion wird ausgeführt und sollte ein Argument beinhalten, das die Funktion auch wieder beendet.

    Das Problem ist logischer Art. Verdeutliche Dir die Zusammenhänge und schaue Dir ggf. ein Beispiel für die entspr. Syntax und Logik an.

    Trotzdem viel Erfolg.

Haben Sie noch Fragen? Jetzt beantworten lassen.