# Sonderzeichen mit preg_replace ersetzen



## Bernd_Munich (20. Juli 2005)

Hallo,

vielleicht kann mir ja hier jemand helfen? Ich möchte in einem Dateinamen alle Sonderzeichen z.B. durch einen _ Unterstrich ersetzen und vielleicht noch äöüß nach ae etc. umwandeln.

Gültige Zeichen sollen sein: a-z A-Z 0-9 - _ (Also Angabe einer Positiv-Liste), alles andere soll durch einen _ Unterstrich ersetzt werden.

Ich denke preg_replace ist die richtige Funktion dafür, blicke aber durch die komplizierte Syntax leider nicht durch.

Danke Bernd


----------



## Gumbo (20. Juli 2005)

Probier mal Folgendes: preg_replace('/[^a-zA-Z0-9_-]/u', '_', _$string_).


----------



## Bernd_Munich (20. Juli 2005)

Hallo Gumbo,

danke - die Syntax werde ich mir mal unters Kopfkissen legen! 

Geht das mit den äöüß auch einfacher:


```
$patterns[0] = '/ä/';
$patterns[1] = '/Ä/';
$patterns[2] = '/ö/';
$patterns[3] = '/Ö/';
$patterns[4] = '/ü/';
$patterns[5] = '/Ü/';
$patterns[6] = '/ß/';
$patterns[7] = '/[^a-zA-Z0-9_-]/u';
$replacements[0] = "ae";
$replacements[1] = "AE";
$replacements[2] = "oe";
$replacements[3] = "OE";
$replacements[4] = "ue";
$replacements[5] = "UE";
$replacements[6] = "ss";
$replacements[7] = "_";
$picture1name = preg_replace($patterns, $replacements, $picture1name);
```

Danke Bernd


----------

