Frage zu Preg_replace

Frage zu Preg_replace

am 06.04.2008 06:50:36 von joerg.nieswand

Halli Hallo,

ich möchte gerne einen Text bereinigt ausgeben d.h., das nur Buchstaben
und der Bindestrich bestehen bleiben. Leider weiß ich nicht, wie ich
auch das Leerzeichen in den preg_replace Befehl hier einbauen kann. Kann
mir jemand helfen? Vielen Dank im voraus :-))


$text="123Das ist ein schöner Tag321";
$text = preg_replace("/[^a-zA-ZäöüÄÖÜß-]/", "",$text);
echo $text;

Re: Frage zu Preg_replace

am 06.04.2008 08:50:19 von Benjamin Zikarsky

Jörg Nieswand schrieb:
> Halli Hallo,

Hallo!

> ich möchte gerne einen Text bereinigt ausgeben d.h., das nur Buchstaben
> und der Bindestrich bestehen bleiben. Leider weiß ich nicht, wie ich
> auch das Leerzeichen in den preg_replace Befehl hier einbauen kann.

Der Ansatz ist doch an sich gar nicht schlecht. Du hättest in die
Zeichenklasse auch einfach noch ein Leerzeichen hinzufügen können.
Wenn du jede Form von Whitespace "matchen" willst wäre '\s' zu
empfehlen. Und um dir die Groß- und Kleinschreibung im Ausdruck zu
sparen könntest du 'i' dem Ausdruck hinzugeben, dann wird Groß- und
Kleinschreibung nicht mehr beachtet:

$text = "123Das ist ein schöner Tag321";
$text = preg_replace('~[^a-zäöüß\s-]~i', '', $text);

Am Schluss würde ich dann vermutlich (wenn ich an die häufigsten
Einsatzzwecke eines solchen RegExps denke) noch Whitespace am
Anfang/Ende entfernen ;)

$text = trim($text);
echo $text

Grüße
Benjamin

Re: Frage zu Preg_replace

am 06.04.2008 12:16:01 von Claus Reibenstein

Jörg Nieswand schrieb:

> Leider weiß ich nicht, wie ich
> auch das Leerzeichen in den preg_replace Befehl hier einbauen kann.

Indem Du es eintippst.

> $text = preg_replace("/[^a-zA-ZäöüÄÖÜß-]/", "",$text);

$text = preg_replace("/[^ a-zA-ZäöüÄÖÜß-]/", "",$text);

Gruß. Claus

Re: Frage zu Preg_replace

am 06.04.2008 15:36:14 von joerg.nieswand

Jau, danke für Eure Hilfe :-))
>
> $text = "123Das ist ein schöner Tag321";
> $text = preg_replace('~[^a-zäöüß\s-]~i', '', $text);