SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 08.05.2004, 14:48:31
Idolast Idolast ist offline
Anfänger
 
Registriert seit: Oct 2003
Ort: Nürtingen
Beiträge: 24
Zu lange Wörter bei einem Gästebucheintrag zerstückeln

Hi,
In meinem Gästebuch hat mein Freund, um mich zu ärgern einen Beitrag gepostet der alles durcheinander bringt.
Ein Wort, das sehr lang ist (den Platz der dafür vorgesehen war reicht also nicht mehr aus), macht diese Spalte der Tabelle sehr breit und damit wird auf der gesamten Seite alles verrutscht.
Wie kann ich verhindern, dass jemand so lange Wörter schreibt, beziehungsweise wie kann ich diese Wörter verkleinern.
Ich habs mit chunk_split versucht, aber da wird dann der ganze Beitrag nach ner bestimmten Länge einfach unterbrochen, und nicht darauf geachtet, dass zwischen den Wörtern Leerzeichen sind, er sieht also den gesamten Beitrag als ein Wort an, dass nur eine bestimmte Anzahl von Zeichen haben darf.
Mein letzter Versuch war, dass ich den Beitrag in einen Array umwandle, wobei jedes Wort für sich durch chunk_split geteilt wird. Dass klappt auch ganz gut, nur wird hier nach einer bestimmten Anzahl an Zeichen einfach der Beitrag beendet.(Vielleicht weil der Array voll ist, oder explode() nicht so viele Wörter auf einmal bearbeiten kann?!?!?)
Hier der Code:
PHP-Code:
$inhalt $_REQUEST['inhalt'];

$inhalt1 = array();
$inhalt2 explode(" ",$inhalt);
$anzahl count($inhalt2);
for(
$x=0;$x<=$anzahl;$x++) {
$inhalt chunk_split($inhalt2[$x],80," ");
array_push($inhalt1,$inhalt);
}

$inhalt implode("",$inhalt1); 
Weiß irgendjemand, wie man das richtig hinbekommt?
Mit Zitat antworten
  #2  
Alt 08.05.2004, 15:05:59
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Re: Zu lange Wörter bei einem Gästebucheintrag zerstückeln

Zitat:
Original geschrieben von Idolast
>In meinem Gästebuch hat mein Freund, um mich zu ärgern einen Beitrag
>gepostet der alles durcheinander bringt.

Du kannst Freunde haben.

Für sowas gibt es Gästebücher, bei denen der Admin die Eintragungen freischaltet. Das ist zwar unbequem, aber es verhindert auf simple Art und Weise alle Probleme, die man hat oder noch bekommen könnte. Immerhin haftet ja der Reg-C für die veröffentlichten Inhalte.

>Ein Wort, das sehr lang ist (den Platz der dafür vorgesehen war
>reicht also nicht mehr aus), macht diese Spalte der Tabelle sehr
>breit und damit wird auf der gesamten Seite alles verrutscht.

Ein feines Gästebuch, daß nur mit "kurzen Wörtern" klarkommt.

>Wie kann ich verhindern, dass jemand so lange Wörter schreibt,

Huch? Zensur? "Fehler: Dieses Gästebuch kann nur Wörter mit max. 20 Zeichen verarbeiten!"

>beziehungsweise wie kann ich diese Wörter verkleinern.

Wie stellst Du Dir das vor, "lange Worte" zu verkleinern, ohne daß das Ergebnis eine orthographische Lachnummer wird?
Mit Zitat antworten
  #3  
Alt 08.05.2004, 15:15:09
Idolast Idolast ist offline
Anfänger
 
Registriert seit: Oct 2003
Ort: Nürtingen
Beiträge: 24
Also, du rückst das ganze etwas ins falsche Licht, würd ich sagen :D
Das hat nix mit Zensur zu tun, ich habe jetz Wort gesagt, meinte aber bespielsweise so etwas:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh hhhhhhhhhhhhhhhhhhhh

Du kannst mir jetzt sagen, was du willst, aber das ist für mich kein Wort sondern einfach nur Blödsinn, den ich ja noch nicht mal automatisch löschen lassen will, sondern einfach, wie in diesem Forum, einen Zeilenumbruch einbauen möchte.
Zum jetzigen Zeitpunkt wäre in meinem Gästebuch noch nichtmal irgendwas kaputt durch solche Beiträge, da Design-mäßig noch nichts gemacht wurde :D , aber es ist einfach blöd, wenn aufgrund eines solchen wirklich dämlichen Beitrags, wie dem oben genannten, die Seite ewig weit nach rechts zu scrollen wäre.
Es hat also nichts mit Zensur zu tun...

PS: Und mein Freund hat mir in dem Fall sogar was gutes getan, da er mich auf das Problem aufmerksam gemacht hat.
Mit Zitat antworten
  #4  
Alt 08.05.2004, 16:01:07
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
dann schau dir bitte an, was du machst

du willst, dass kein einzelnes wort eine bestimmte länge überschreitet.

also nimm den beitrag auseinander (an den leerzeichen trennen), überprüfe die länge jedes einzelnen wortes, und wenns genehm ist, füge sie (mit einem leerzeichen trennung) wieder an den neuen inhalt an.

alles in allem müssten das nicht mehr als 5 zeilen code werden, evenutell sogar nur 4.
Mit Zitat antworten
  #5  
Alt 08.05.2004, 16:24:59
Idolast Idolast ist offline
Anfänger
 
Registriert seit: Oct 2003
Ort: Nürtingen
Beiträge: 24
Zitat:
Original geschrieben von feuervogel
also nimm den beitrag auseinander (an den leerzeichen trennen),
$inhalt2 = explode(" ",$inhalt);
Zitat:
überprüfe die länge jedes einzelnen wortes,
$anzahl = count($inhalt2);

for($x=0;$x<=$anzahl;$x++) {

$inhalt = chunk_split($inhalt2[$x],80," ");

array_push($inhalt1,$inhalt);

}
Zitat:
und wenns genehm ist, füge sie (mit einem leerzeichen trennung) wieder an den neuen inhalt an.
Auch das habe ich gemacht mit:
$inhalt = implode(" ",$inhalt1);

Ich höre auch hier wieder etwas Kritik an meinem Vorhaben raus. Ich verstehe nicht was ihr dagegen habt. Schaut euch meinen Beitrag an, dieses SELFPHP Forum hat auch einen Filter gegen zu lange Wörter. Exakt dies möchte ich auch. Ich möchte nicht bestimmte Wörter aussortieren und nicht zulassen. Ich will lediglich dass die Tabelle in die der Beitrag eingefügt wird nicht mehr die angegebenen <td width="..."> Breiten einhalten kann, bloß weil ein Wort zu lang ist. Und ich meine mit zu lang nicht, dass es 20 Zeichen hat, sondern dass es vielleicht 100 Zeichen hat!
Mit Zitat antworten
  #6  
Alt 08.05.2004, 17:24:24
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
PHP-Code:
$wordarr = array( explode" " $_POST'textfield ' ] ) );
foreach ( 
$wordarr as $value ) {
if ( 
strlen$value ) < 100 )
$newcontent $value " "; } //oder was du sonst damit machen willst 
bedenke aber auch, dass "rn" nicht als leerzeichen gedeutet werden.

das ding ist einfach bei deinem problem, dass es ziemlich knifflig ist, das ganze korrekt zu machen. selsbt wenn es einen umbruch gibt, hast du nur mist im gbook stehen. bau dir halt ne admin funktion ein und lösche diese beiträge.
Mit Zitat antworten
  #7  
Alt 08.05.2004, 17:37:55
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Zitat:
Original geschrieben von Idolast
>Also, du rückst das ganze etwas ins falsche Licht, würd ich sagen :D
>Das hat nix mit Zensur zu tun,

Aber ich. Du mußt sogar Zensur üben, weil Du für das, was auf Deiner Website mit Dir als Reg-C/Admin-C veröffentlicht wird, strafrechtlich verantwortlich bist - egal, wer's tatsächlich geschrieben hat! Du bist dran. Und da es definitiv kein Script gibt, daß zB. Gästebuch- u/o Forentexte auf strafrechtlich relevante Passagen überprüft, mußt Du eh nachgucken und ggf. löschen.


[ das lange Wort ]
>Du kannst mir jetzt sagen, was du willst, aber das ist für mich kein
>Wort sondern einfach nur Blödsinn, den ich ja noch nicht mal
>automatisch löschen lassen will, sondern einfach, wie in diesem
>Forum, einen Zeilenumbruch einbauen möchte.

Dafür gibt's wordwrap().

Da Du nicht nur sinnvolle Zeilenumbrüche benötigst sondern auch noch zu lange Zeichenketten ohne Rechtschreibkontrolle splitten willst, mußt Du wordwrap einmal mit cut=0 verwenden. Zu lange Zeichenketten kannst Du separat mit cut=1 splitten.

PHP-Code:
$text explode (' '$text);
for (
$i=0$i<count($text); $i++) $text[$i] = wordwrap($text[$i], 30"n",  1);
$text nl2brwordwrapimplode(' '$text), 50"n"0)); 
Mit Zitat antworten
  #8  
Alt 08.05.2004, 18:03:42
Idolast Idolast ist offline
Anfänger
 
Registriert seit: Oct 2003
Ort: Nürtingen
Beiträge: 24
Ok, danke euch beiden für eure Posts, aber die beiden Varianten liefern nahezu dasselbe Ergebnis, welches mich leider noch nicht befriedigt.
Kann es sein, dass explode() bzw implode() nur eine bestimmte Anzahl an Zeichen bearbeitet?
Beim Code von meikel wird aus dieser Eingabe:

Mit wordwrap() kann man innerhalb eines Strings (str) unter Angabe des
optionalen Trennzeichens (break) nach einer bestimmten Länge (width)
umbrechen.
Werden die optionalen Parameter width und break nicht angegeben, so umbricht
diese Funktion automatisch nach 75 Zeichen.


Dieser Text:
Mit wordwrap() kann man innerhalb eines Strings (str) unter Angabe des
optionalen Trennzeichens (break) nach einer bestimmten Länge (width)
umbrechen.
Werden die optionalen Para


Warum ist das so? Das muss doch etwas mit der Anzahl der Zeichen zu tun haben ... schafft es ist für den Server zu aufwendig jedes Wort einzeln zu überprüfen?
Mit Zitat antworten
  #9  
Alt 08.05.2004, 18:36:53
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Zitat:
Original geschrieben von Idolast
Ok, danke euch beiden für eure Posts, aber die beiden Varianten liefern nahezu dasselbe Ergebnis, welches mich leider noch nicht befriedigt.
Mich schon, da ich nicht dafür bezahlt werde, für Dich die Scripte zu schreiben oder Dir das Handbuch vorzulesen. Wenigstens ein Minimum an Eigeninitiative solltest Du schon aufbringen können.
Mit Zitat antworten
  #10  
Alt 08.05.2004, 18:50:35
Idolast Idolast ist offline
Anfänger
 
Registriert seit: Oct 2003
Ort: Nürtingen
Beiträge: 24
Hmm, sorry ich wollt dich jetz nich angreifen. Das is mir schon klar dass keiner mir hier antworten MUSS. Trotzdem wollt ich eben sagen, dass ihr mir zwar, und dafür bin ich euch sehr dankbar, versucht habt zu helfen, doch leider war es (noch) nicht die Lösung meines Problems.
Da ich mir PHP anhand von Selfphp.info beigebracht hab und das noch nicht all zu lange mache, denke ich, dass ich wohl dazu berechtigt bin hier nachzufragen. Natürlich war es nicht ganz fair zu sagen, dass es mich noch nicht befriedigt, was ihr mir gebt, aber ich denke ihr wisst was ich meine.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:09:45 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt