[PHP] Funktion zum ersetzen bestimmter Zeichen

Zweipunktnull

Commander
Registriert
Dez. 2004
Beiträge
2.546
Hallo!

Ich suche eine relativ clevere möglichkeit
einen String nach bestimmten zeichen zu durchsuchen und dann alle zeichen die NICHT denen entsprechen, durch ein anderes zu ersetzen.

Also praktisch... gibts eine Funktion die das gegenteil von preg_replace() kann?

Weil preg_replace() durchsucht ja einen String und ersetzt die angegebenen zeichen durch beliebige andere.
Ich möchte nun aber gerade alle anderen zeichen ersetzt haben, die nicht dem suchmuster entsprechen.

Ich hoffe man versteht mich:)
ich brauch das, um bei einem bildprogramm aus den originalen bilddateinamen zeichen wie klammern und so rauszuschneiden. denn vieles was in windows erlaubt ist geht ja nicht im internet.

Leerzeichen hab ich bis jetzt so entfernt:
str_replace(" ", "", $ImageName);

Jetzt allerdings ne liste mit allen zeichen zu machen find ich aufwändig und ich würd eh eins vergessen. :D

Also wäre mir am liebsten halt ne funktion das das oben beschriebene tut.
suchmuster wäre dann halt 0-9 a-z A-Z und alles was dem nicht entspricht soll durch "" ersetzt werden (also gar nix --> gelöscht)

so jetzt müssts klar sein :D

mfg
 
Zuletzt bearbeitet:
das ist eine frage der regex.

$output=preg_replace('@[^a-zA-Z0-9]@','',$input);

sollte an sich alles ausser a-z, A-Z und 0-9 rausfiltern. ohne gewähr, code nicht so oft php und kann durchaus danebenliegen.


edit: nach kurzem test scheints korrekt zu funzen
 
Zuletzt bearbeitet:
Ähm... kann das mal einer erklären?

Die @ sind die Begrenzungszeichen...
Das ^ steht für den Beginn einer Zeichenkette...

Wieso ersetzt der jetzt nicht die Zeichen a-zA-Z0-9 sondern alles außer die, hä?

Das ist doch jetzt ein ganz normaler regdings und der müsste doch jetzt die zeichen a-zA-Z0-9 ersetzten und nicht die anderen, oder?
 
Das ^ hat 2 Funktionen, je nach Position. Innerhalb der Klammer steht es wie in diesem Beispiel für Negation des Ausdrucks.
 
so ist das bei php meistens ^^
 
Zurück
Oben