deedee0815
Goto Top

Feedback-Bereich Probleme mit der Zeichenlängenzählung eines einzelnen Wortes

Ich möchte in dem Feedback-Bereich auf meiner Seite jedes einzelne Wort auf seine länge überprüfen und bei überschreitung einer festgesetzten länge eine Fehlermeldung ausgeben. So wie ich das gemacht habe, geht das aber nicht.

Guten Tag,

Mit folgender Schleife überprüfe ich im Feedback-Bereich meiner Seite (in der Datei die in dei Datenbank schreibt), ob ein einzelnes Wort länger als 30 Zeichen ist:

7db58b8a18928556036d6ae44af1e138-code_wordcount

Aber leider geht das nicht so richtig. Es wird schon EDIT: wenn ein Wort kürzer als 30 Zeichen ist eine Fehlermeldung ausgegeben. Ich solle noch erwähnen das der oben Aufgeführte Code sich im "Kern" von vielen weiteren überprüfungsschleifen befindet, die aber alle korrekt arbeiten und keine Fehler enthalten. Die Variable "$insert" wird übrigens später benötigt, um zu überprüfen ob alles in Ordnung war, und das Posting gespeichert werden soll.

Was ist falsch?
DeeDee0815

Content-Key: 25202

Url: https://administrator.de/contentid/25202

Printed on: April 20, 2024 at 02:04 o'clock

Member: Dani
Dani Feb 04, 2006 at 14:15:08 (UTC)
Goto Top
Könntest du bitte genauer erläutern um was für ein Feld es geht. Für welches Feld ist die Schleife zuständig??
Member: DeeDee0815
DeeDee0815 Feb 04, 2006 at 14:17:47 (UTC)
Goto Top
Ja, dass hätte ich erwähnen sollen: Es geht um das Textfeld, in das man seinen Kommentar eintragen soll. Ein einzelnes Wort, darf nicht länger als 30 Zeichen sein.

Gruß
DeeDee0815
Member: Dani
Dani Feb 04, 2006 at 14:29:12 (UTC)
Goto Top
Aber leider geht das nicht so richtig. Es
wird schon wenn ein Wort länger als 30
Zeichen ist eine Fehlermeldung ausgegeben.

Aha. Was genau geht nicht?? Der Satz oben ist ein bisschen wieder sprüchig.
Member: Guenni
Guenni Feb 04, 2006 at 18:18:06 (UTC)
Goto Top
@ DeeDee0815

Hi,

auf den ersten Blick arbeitet dein Script korrekt, denn du setzt eine Variable
auf False, sobald ein Wort "Länge > 30" gefunden wurde. Dann darf kein Einfügen
erfolgen.

Deinem Schrieb:
"...Es wird schon wenn EIN Wort länger als 30 Zeichen ist eine Fehlermeldung ausgegeben...."
entnehme ich, dass du dem Besucher "alle" Worte zeigen willst, die deine Bedingung nicht
erfüllen?

Dann füge diese Worte in deiner Prüf-For-Schleife in ein Array ein:
wenn Länge > 30 $array[i]=$words[i]

Wenn $word_ok dann false ist, kannst du dem Besucher dann in einer For-Schleife
die Worte auflisten.

Wenn die Betonung tatsächlich auf "...wenn EIN Wort länger als 30 Zeichen ist..." liegt,
dann weise $word_ok nicht false/true zu, sondern zähle die Variable einfach hoch und frage ab,
ob dieser Wert über einem definierten Wert liegt liegt.

Wenn $word_ok > definierter Wert , dann Fehler.

Wenn meine Interpretation falsch war, dann versuchen wir's nochmal.

Gruß
Günni
Member: DeeDee0815
DeeDee0815 Feb 07, 2006 at 15:42:52 (UTC)
Goto Top
Entschuldigung, ich habe mich verschrieben: Es muss heißen: "schon bei weniger als 30 Zeichen". Das ist nämlich das Problem.

Inzwischen habe ich herausgefunden, dass es daran liegt, dass wenn man einen absatz macht, dieser einfach als Zeichen gewertet wird. Er ist also kein trenner zwischen zwei Worten. Dieses Problem habe ich folgendermaßen gelöst: Alle "\n" werden in ein Leerzeichen umgewandelt: Das Problem: Macht jemand zwei absätze sind es auch zwei leerzeichen. Das Zweite wird zur Zeichläge addiert: Folglich hat der Nutzer nur noch 29 Zeichen zu verfügung.

Um die Frage zu beantworten, ich muss micht wirklich für meine ungenauen und falschen Formulierungen entschuldigen, ich will nicht jeden einzelnen Fehler auflisten.

Jetzt muss ich nur noch wissen, wie man doppelte oder drei oder zehnfache leerzeichen in eines umwandelt.

Gruß
DeeDee0815
Member: nk
nk Feb 09, 2006 at 11:03:46 (UTC)
Goto Top
Hallo,

wahrscheinlich hast Du bereits eine Loesung gefunden, aber
mit Regulaeren Ausdruecken geht es um einiges einfacher:
$maxChars = 8;
$pat = '/\s?(\w{'.$maxChars.'}?\w+)\s?/ism';  
$text = "Kenden Ehen Ach Scheiche, Tassen als Carlo verchromtes Akt dm aufzählt. Diwan Andy lerne malo heilerem, Anm Bus wirklic.";  
if(preg_match($pat, $text, $match)) {
	echo "Achtung das Wort '".$match[1]."' ist zulang!";  
}


mehr zu RegExp:
http://www.php-resource.de/tutorials/read/10/1/


gruss
Member: DeeDee0815
DeeDee0815 Feb 10, 2006 at 19:38:19 (UTC)
Goto Top
Vielen Dank für deine Hilfe. Danke für den Code!
face-wink

Gruß
DeeDee0815