Alle Zeichen ausser X-Y durch Z ersetzen

Gray

Erfahrenes Mitglied
Hi,

ich habe leider nichts passendes gefunden über die Suche.

Ich habe einen String der jedes Zeichen enthalten kann und nun möchte ich alle Zeichen ausser a-zA-Z0-9-_ durch _ ersetzen. Nur leider weis ich nicht wie ich das bewerkstelligen kann.
 
Der Titel ist eine andee Frage als der Text.

Lösung zur Titelfrage
PHP:
preg_replace('([XY])', 'Z', 'Test BlaXYZxyz123');

Lösung zur Frage im Text
PHP:
preg_replace('([^a-z^A-Z^1-9^\-^_])', '_', 'Test BlaXYZxyz1_23,.-');
 
Würde es so machen:

PHP:
$text = preg_replace('/[^a-zA-Z0-9\-_]/', '_', $text);
$text = preg_replace('/_+/', '_', $text);
$text = trim($text, '_');

1.) erstetzt alles was nicht a-zA-Z0-9 oder - ist mit _
2.) mehrere _ hintereinander mit einem _ ersetzen
3.) _ die am Anfang oder Schluss sind löschen
 
Zurück