Edgar Ehritt: regex alle leerzeichen WENN mehr als 1 entfernen

Beitrag lesen

Hallo,

ok bin heute nacht zu voreilig alles mit einem replace gelöst
$somecontent = ereg_replace("[ ]{2,20}","",$somecontent);

Müßte da nicht noch der g-Modifier gesetzt werden, damit nicht nur das erste Vorkommen ersetzt wird?

nein, Modifier gibt es nur bei PCRE (vgl. man regex).

Da die ereg*-Funktionen deprecated sind und wohl demnächst entfernt werden, solltest Du auf die preg*-Funktionen umstellen.

Das zum einen; zum anderen ist der RegEx fehleranfällig und darüber hinaus auch nicht effizient. Folgende simple Funktion benötigt weder Erweiterungen noch ist sie möglicherweise fehlerbehaftet:

function trimspace($s){  
	$c=strlen($s);  
	$r='';  
	$d=false;  
	  
	for($i=0;$i<$c;$i++){  
		if($s{$i}==' '){  
			if($d){  
				continue;  
			}  
			$d=true;  
		}  
		else	$d=false;  
		$r.=$s{$i};  
	}  
	return($r);  
}

Gruß aus Berlin!
eddi