ereg_replace und leerzeichen

melmager

Erfahrenes Mitglied
Ich verstehe es nicht wirklich eventuell einer von euch:

Ich übergebe einem script per inputfeld einen String und wollte daraus
ein Suchstring bauen.
um die Sache vorzubereiten wollte ich alle zusammenhängen Leerzeichen
ersetzen:

$erg = ereg_replace("\s+","|",$seingabe);

ging nicht

"[:space:]+" auch nicht genauso wenig wie "\s{1,}"

was aber ging

"( )+"

wer klärt mich auf warum die andren Versionen nicht gingen ?
 
Zuletzt bearbeitet:
Weil es...

1. ... bei den ereg_* Funktionen kein Steuerzeichen für Whitespaces gibt, so weit ich weiß.

2. ...wenn dann so heißen muss:
PHP:
$erg = ereg_replace("[[:space:]]+","|",$seingabe);
Bei [:space:] würde er nach den Zeichen ':', 's', 'p', 'a', 'c', oder 'e' suchen.

Fazit: Immer die preg_* Funktionen benutzen. Die sind erstens Perl kompatibel (es gibt also bspw. ein Steuerzeichen \\s) und zweitens meist auch noch schneller :)
 
1) dann ist aber ereg nicht posix kompatibel :-(

2) na toll dann darf man sich auch noch die Perl Syntax reinziehen :-(

jedenfalls werde ich die Funktionen der ereg Reihe in Zukunft meiden

die zusätzlichen [ ] in PHP sind aber auch recht eigenwillig

jedenfalls habe ich noch kein regex in eine Programmsprache gesehen das so arbeitet wie
man es erwartet ...

aber danke für die Info
 
1) So weit ich das sehe, schon. Ich hab im POSIX 1003.2 Standard nichts von einem Ausdruck für Whitespaces finden können.

2) Die Perl Syntax ist auch nicht wirklich komplizierter, in vielen Fällen den POSIX RegExps sogar ziemlich ähnlich.

3) Die "zusätzlichen" [ ] sind nicht eigenwillig, sondern entsprechen dem Standard. Ist bei den PCRE übrigens auch nicht anders.


Vielleicht liegt es ja an deinen fehlenden Kenntnissen der Standards, dass nichts so arbeitet, wie du es erwartest? *feix* ;)
 
Ja die fehlenden zusätzlichen [ ] nehme ich auf meine Kappe :)

grep mault da auch :)

und ich denke die \s Variante habe ich auch geknackt - bin nur zu faul zum testen :)

Vielleicht liegt es ja an deinen fehlenden Kenntnissen der Standards, dass nichts so arbeitet, wie du es erwartest? *feix*

gleich haue ich mit dem System V Handbuch - smile
 
Zuletzt bearbeitet:
Zurück