Hallo und Mahlzeit,
ich möchte mehrfach hintereinander vorkommende Satzzeichen durch jeweils nur ein Satzzeichen ersetzen, d.h., aus beispielsweise "!!!!" soll "!" werden:
$Inhalt = "Ein beliebiger Text !!!?????";
$Zeichen = array (' ', '!', '?');
for ($i = 0; $i < count ($Zeichen); $i++)
{
$Inhalt = preg_replace ('/' . $Zeichen [$i]. '+/', $Zeichen [$i], $Inhalt);
}
Ich habe das Array bewusst noch so klein gehalten, da ich es Satzzeichen für Satzzeichen erweitern möchte, da es ja Zeichen gibt (meines Wissens nach "\ ^ . $ | ( ) [ ] * + ? { } ,"), die maskiert werden müssen und ich möchte hier nicht gleich die fehlerhafte Nadel im Heuhaufen suchen müssen.
Obiger Code funktioniert einwandfrei, lediglich habe ich bei den maskierten Zeichen, hier "?", das Problem, dass der Backslash natürlich auch mit ausgegeben wird.
In meinem Code wird damit aus...
Ein beliebiger Text !!!?????
die neue Zeichenkette...
Ein beliebiger Text !?
Ich habe daraufhin versucht, den Backslash zu entfernen:
$Inhalt = preg_replace ('//', '', $Inhalt);
Hier bekam ich aber die Fehlermeldung "No ending delimiter '/' found".
Gut, daraufhin habe ich den Backslah maskiert:
$Inhalt = preg_replace ('/\/', '', $Inhalt);
Aber leider immer noch mit der Fehlermeldung als Resultat.
Wo liegt mein Fehler bzw. gibt es für mein Vorhaben vielleicht noch eine bessere Variante, die ihr empfehlen würdet?
Vielen Dank und Gruß,
Enrico