Zu lange Texteingaben prüfen

kidata

Grünschnabel
Hallo Forum,

habe folgendes Problem:

In einem Formular kann der User in 'ner Textarea seine Nachricht eingeben. Wenn dann so was wie:

"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfffffffffffffffffffffffffffeinextralangereintragohneeineinzigesleerzeichendazwischenkannsichganzschönfatalaufeinseitenlayoutauswirkenundweilichsoeinböserbubebinhängeichgleichnochwashintendran!

ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"

eingetragen wird, muss ich ja irgendwie überprüfen ob ein in der variable des Textfeldes eine zu große Anzahl ununterbrochener Zeichen vorhanden ist - da der Browser ja so was nicht autom. umbricht und somit das Layout flöten geht und ich so'nen lecker horizontalen Scroll-Balken kriege

Also muss ich ja in dem String checken ob ein Teilstring evtl. länger als die max. erlaubte Zeichenzahl pro Zeile.
Und wie?
 
erstmal teilst du den kompletten string (mit der epxlode-funktion) in ein array auf, wobei du leerzeichen als trenner nimmst.
dann lässt du eine schleife laufen, in der du jedes element dieses arrays auf eine bestimmte länge prüfst. da strings ja wieder nichts anderes als arrays sind, kannst du das einfach mit count() machen.
wenn die länge des teilstrings zu gross ist, brichst du einfach ab.

ansonsten hilft dir vielleicht das hier weiter?
 
thanx,

die version mit css wird wohl reichen, denn vom ansatz dachte ich mir das auch so mit exploden an leerzeichen usw. - was aber wenn garkeine leerzeichen drin sind usw. dann wird's dann schon echt umfangreich das ganze zu prüfen.

mal sehen was NS zu den CSS-Angaben sagt....
hm, toll NS kannste ma widda voll haken...

also dann doch fröhlich exploden.
 
wenn keine leerzeichen drin sind, gibt explode gar nichts zurück. dann prüfst du einfach den original-string auf seine länge. ;)
 
ok, habe mal eine function gebastelt, aber die will nicht
so recht, es wird immer der original-string zurückgegeben.
woran könnte das liegen - ist 'chunk_split' vielleicht nicht ganz der richtige befehl dafür?!
PHP:
function check_msg($to_check, $maxchars){
# $to_check: der zu prüfende string
# $maxchars: die maximale wortlänge pro zeile
$checked = array();

	$teile = explode (" ", $to_check);
	
	$anzahl_teile = count($teile); // wieviele Wörter zu checken?
	
	if (is_array($teile)){
		//teile auf maximale länge checken:
		
		for ($i = 0; $anzahl_teile > $i; $i++){
			if (strlen($teile[$i]) < $maxchars){
				// wenn teil-string länger als erlaubt nach maxchars umbrechen:
				
				$teil_ok = chunk_split($teile[$i],$maxchars,"\n");
				
				// und an das checked-array anhängen:
				
				array_push($checked, $teil_ok);
				}
			else {
				// wenn nicht länger als erlaubt, teilstring unverändert an array anhängen:
				
				array_push($checked, $teile[$i]);
				}
			}
		$returnwert = implode (" ", $checked);
		return $returnwert;
	}
	else {
		//sonst den gesamten string prüfen
		$returnwert = chunk_split($to_check,$maxchars,"\n");
		return $returnwert;
	}

}
 
Zuletzt bearbeitet:
Hey Super!

So funzt das, vielen Dank!

PS: Aber der Programmierer von diesem Forum hat's damit nicht so genau genommen... dafür kann's andere schöne Sachen.
 
Zurück