PHP überflüssige Leerzeichen entfernen

asseskiller

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
447
Hi,

wie entferne ich überflüssige Leerzeichen in der mitte eines Textes:
Bsp:
Vorher
Hallo Welt
Nachher
Hallo Welt

Danke im Vorraus

Ich merke gerade das der Texteditor hier auch alle überflüssigen leerzeichen herausnimmt
deswegen schreibe ich für Leerzeichen mal "L"

Vorher
HalloLLLLLLLLLLLLLWelt
Nachher
HalloLWelt
 
Zuletzt bearbeitet:
wie wäre es wenn du einfach in dem text nach "   " suchst und wenn es mehr als 2 mal hintereinander vorkommt nimmst du replace an der Stelle und ersetzt das &nbsp mit KEINEM Zeichen also ""

gruß
 
Naja das geht nicht.
Ich hab vorher nen strip_tags gemacht.
Und dann is der text voller lehrzeichen.
Also nicht &nbsp sondern richtige.

Hab jetzt ne funktion geschrieben die aber nicht geht:

PHP:
function leerzeichen_entfernen($string)
	{
	while($z>0)
		{
		$z = 0;
		$laenge = strlen($string);
		for($i=0;$i<=$laenge;$i++)
			{
			if($string[$i]=" ")
				{
				if($string[$i+1]=" ")
					{
					$z = $z+1;
					}
				}
			}
		$string = str_replace("  ", " ", $string);
		}
	return $string;
	}
 
Guckst du hier:
PHP:
Beispiel #5 Leerzeichen entfernen
Dieses Beispiel entfernt überschüssige Leerzeichen aus einer Zeichenkette.

<?php
$str = 'foo   o';
$str = preg_replace('/\s\s+/', ' ', $str);
// Das ist jetzt 'foo o'
echo $str;
?>
 
geil funktioniert

Aber ich hasse diese Preg und ereg funktionen ich verstehe die irgendwie immer nicht.
Kann mir ma einer erklären was mir "/\s\s+/" sacht
ich weiß das \s nen leerzeichen ist richtig?
 
ah danke und was haben die slahes zu bedeuten?
 
/HIER STEHT DAS SUCHMUSTER /

Das bedeuten die slashes. \s steht wohl für ein leerzeichen und \s+ für beliebig viele?
 
Code:
'/\s\s+/'
- die / grenzen den regulären Ausdruck ab
- \s steht für ein Leerzeichen, es wird also nach einem Leerzeichen gesucht
- hinter einem gefundenen Leerzeichen muss jetzt noch mindestens ein weiteres stehen, das wird mit Hilfe des + (1 oder mehr) ausgedrückt
- die Standardsuche bei RegEx nennt man gierig, dh wenn man eine Lücke von 6 Leerzeichen hat, dann wird der Ausdruck, obwohl er auch auf die ersten zwei Leerzeichen passen würde, immer auf die kompletten 6 Leerzeichen angewendet
 
Zurück
Oben