Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Reguläre Ausdrücke - mehrere Leerzeichen durch eines ersetzen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Reguläre Ausdrücke - mehrere Leerzeichen durch eines ersetzen


 
janein
29-11-2007, 20:47 
 
Wie ersetze ich mehrer Leerzeiche in einem string durch nur eines?
Ich habe so etwas probiert. Es geht jedoch nicht.

$text = preg_replace("/(\s.)(\s+)/", '$1', $text);

 
TobiaZ
29-11-2007, 22:30 
 
Warum ersetzt du nicht einfach \s+ durch ""?

 
onemorenerd
30-11-2007, 00:45 
 
Mit Kanonen auf Spatzen ...
$text = str_replace(' ', ' ', $text);

 
H2O
30-11-2007, 08:24 
 
Original geschrieben von onemorenerd
$text = str_replace(' ', ' ', $text); Damit ersetzst du x Leerzeichen mit ceil(x/2). Das dürfte nicht der gewünschte Effekt sein.

Andererseits ist Original geschrieben von janein
Es geht jedoch nicht.keine Fehlerbeschreibung.

So müsste es aber gehen:$text = preg_replace('/(\\s)(\\s+)/', $1, $text);, oder wenn es nur um Leerzeichen geht:$text = preg_replace('/ +/', ' ', $text);

 
jahlives
30-11-2007, 09:40 
 
@topicstarter
Manual lesen (http://us.php.net/manual/en/function.preg-replace.php) könnte dich weiterbringen. V.a. Beispiel Nummer 5, wo es ums Ersetzen von mehreren Whitespaces geht.
So müsste es gehen

$str = preg_replace('/\\s\\s+/', ' ', $str);

@H2O
Greift dein zweiter RegExp nicht zu oft? Ersetze ein Leerzeichen mit einem Leerzeichen :dontknow:
Gruss

tobi

 
H2O
30-11-2007, 10:34 
 
Original geschrieben von jahlives
Greift dein zweiter RegExp nicht zu oft? Ersetze ein Leerzeichen mit einem Leerzeichen :dontknow:Da hast du natürlich recht, ich ging davon aus, dass das Bischen Overhead verkraftbar wäre. Ist es aber nicht, $text = preg_replace('/ +/', ' ', $text);ist bedeutend schneller. Beides ist allerdings schneller als deine Version.
=> Wenn nur Leerstellen gefragt sind, auch diese angeben, andernfalls halt '\s'

 
TobiaZ
30-11-2007, 10:36 
 
@H2O
Greift dein zweiter RegExp nicht zu oft? Ersetze ein Leerzeichen mit einem LeerzeichenIm Worstcase wird halt jedes einzelne Leerzeichen ersetzt, ist sicher nicht 100% optimal, aber am Ergebnis ändert das erstmal nichts und bei janeins vorhaben wird er wohl kaum Rücksicht auf die performance nehmen müssen. ;)

okay, h2os aussage wäre eigentlich nichtsmehr hinzuzufügen

 
onemorenerd
30-11-2007, 15:38 
 
Original geschrieben von H2O
Damit ersetzst du x Leerzeichen mit ceil(x/2). Das dürfte nicht der gewünschte Effekt sein.
while (strpos($text, ' ') !== false) $text = str_replace(' ', ' ', $text);Läuft in der Form bestimmt schneller als preg_replace(). Wahrscheinlich auch dann noch, wenn man mit Arrays arbeitet um Tabs und sonstige Formen von Whitespace zu erschlagen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:11 Uhr.