JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=b02708896fbd74884167436e4739938dMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

<php> Umbruch in String einfügen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Revil
Senior JLI'ler



Anmeldedatum: 28.07.2002
Beiträge: 242

Medaillen: Keine

BeitragVerfasst am: 11.06.2003, 16:59    Titel: <php> Umbruch in String einfügen Antworten mit Zitat

Hey,

Ich arbeite zur Zeit an meiner neuen Homepage. Dazu verwende ich PHP und MySQL.

Um zu verhindern das jemand sehr breite Einträge bei den Kommentaren meiner Newspage macht, in dem er z.B. eine Reihe ala

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

usw. spamt, muß ich solche Strings durch Umbruchzeichen teilen. Ich könnte jetzt den String auf die Länge hin überprüfen, dann nach Leerzeichen oder vorhandenen Umbrüchen suchen und dann dementsprechend Umbrüche einfügen lassen.

Aber da dies vielleicht ein häufiges Problem ist, gibt es in PHP oder in MySQL bereits eine vorgefertigte Funktion dafür?! Weiß da jemand eine?
_________________


Take this
Code:
php -r "print rand(-1,0)?Gewonnen:Verloren;"

and this
Code:
perl -e "print( ('Gewonnen', 'Verloren')[rand 2])"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 11.06.2003, 17:59    Titel: Antworten mit Zitat

du könntest nach jedem Xten zeichen ein <br> machen:

Code:

$zeilenumbruch = 100;

for ($i = 0; $i < strlen($string); $i++)
{
     echo $string[$i];

     if ($i == $zeilenumbruch)
     {
         echo "<br>";
         $zeilenumbruch += 100;
     }
}


anders wüste ich im moment keine lösung, ist mir so spotan gekommen Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 11.06.2003, 18:21    Titel: Antworten mit Zitat

Ist es überhaupt notwendig, den Umbruch manuell einzufügen? Der Browser macht den doch automatisch.
Wenn ein String ein zu langes Wort enthält, kannst du dem User ja einfach verbieten, seine Nachricht abzuschicken.
_________________
www.messiahzone.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mr.X
Junior JLI'ler



Anmeldedatum: 15.04.2003
Beiträge: 88

Medaillen: Keine

BeitragVerfasst am: 11.06.2003, 18:30    Titel: ... Antworten mit Zitat

ganz recht, solch eine Funktion gibt es in PHP:

wordwrap()

Diese macht genau das, was Du willst, eben weil es ein häufiges Problem ist ^^

kleines Beispiel:
Code:

<?PHP
$string = "Hier ist ein laaaaaaaaaaaaaaaaaaaaaaaaaaanges Wort";
$string = wordwrap( $string,20, "<br>", 1);
echo $string;
?>

Hier kann man Wörter mit maximal 20 Zeichen eingeben und eine Zeile enthält auch nur maximal 20 Zeichen! Ist eines länger, wie im obigen Beispiel das "laaa....ange", dann wird nach 20 Zeichen das eigens definierte Trennzeichen (im Beispiel "<br>") eingefügt!

Das Beispiel würde folgendes ausgeben:
Zitat:

Hier ist ein
laaaaaaaaaaaaaaaaaa
aaaaaaaaanges Wort

Hierbei werden nur solange Wörter in eine Zeile geschrieben, bis die maximale Zeichenlänge erreicht ist! Im Beispiel sind's 3 Wörter: "Hier ist ein". Durch das nächste Wort würde die maximale Zeichenlänge pro Zeile überschritten, also fügt wordwrap() ein "<br>" ein. Das nächste Wort soll also nun in der neuen Zeile geschrieben werden, da aber das Wort selber schon über die 20 Zeichen kommt, so erzwingt wordwrap() (der letzte Parameter 1 der Funktion "erzwingt" dies) durch Einfügen von "<br>" nach dem 20. Zeichen den Zeilenumbruch und fängt erneut bei 0 an zu zählen. Hierbei passen sowohl der Rest des Wortes als auch noch das letzte Wort innerhalb der nächsten Zeile/20 Zeichen, was die Ausgabe "aaaaaaaaanges Wort" in der letzten Zeil zur Folge hat!



@ DarK:
Durch diesen Vorschlag würde der Text unleserlich, da so auch innerhalb von Wörtern ein Zeilenumbruch eingefügt wird!
Beispiel nach Deiner Methode mit Zeilenumbruch nach 7. Zeichen:
Zitat:

Hier st
ehen di
e neues
ten New
s



gleiches Beispiel mit wordwrap($string,7, "<br>", 1):
Zitat:

Hier
stehen
die
neueste
n News




@ Jörg:
Nein, der Browser nimmt keinen Zeilenumbruch vor, wenn ein Wort länger ist, als es ein Bildschirm in seiner Breite anzeigen könnte (bzw. wenn es länger ist, als die HTML-Tabelle Platz vorgesehen hat, was zu unschönen HTML-Tabellen-Verzerrungen führt). Es würden dann seitliche Scrollbalken am Fenster erscheinen, aber nicht das Wort geteilt!
Und dem User die Möglichkeit nehmen lange Wörter einzugeben, ist wohl auch so etwas wie die Problem aus dem Weg gehen, indem man es garnicht erst zulässt. IMHO kein schöner Programmierstil




mfG


Zuletzt bearbeitet von Mr.X am 11.06.2003, 18:59, insgesamt 3-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 11.06.2003, 18:52    Titel: Antworten mit Zitat

doch noch was dazu gelernt Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Revil
Senior JLI'ler



Anmeldedatum: 28.07.2002
Beiträge: 242

Medaillen: Keine

BeitragVerfasst am: 11.06.2003, 21:08    Titel: Antworten mit Zitat

ThXxX Mr.X, genau sowas hab ich gesucht =D
_________________


Take this
Code:
php -r "print rand(-1,0)?Gewonnen:Verloren;"

and this
Code:
perl -e "print( ('Gewonnen', 'Verloren')[rand 2])"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 12.06.2003, 06:18    Titel: Antworten mit Zitat

Naja Mr. X deine Ausführung war etwas zu lang und dabei könnte man denken, dass einer hier denken mag, wir alle wären dumm...war etwas zu ausführlich! Aber jetzt sollte es jeder gecheckt haben! Wink

Für alle die, die eigentlich das Wichtigste und Nötigste für diese Funktion wissen wollten:
Zitat:

wordwrap -- Wraps a string to a given number of characters using a string break character.
Description
string wordwrap ( string str [, int width [, string break [, boolean cut]]])


Returns a string with str wrapped at the column number specified by the optional width parameter. The line is broken using the (optional) break parameter.

wordwrap() will automatically wrap at column 75 and break using '\n' (newline) if width or break are not given.

If the cut is set to 1, the string is always wrapped at the specified width. So if you have a word that is larger than the given width, it is broken apart.

_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mr.X
Junior JLI'ler



Anmeldedatum: 15.04.2003
Beiträge: 88

Medaillen: Keine

BeitragVerfasst am: 12.06.2003, 08:05    Titel: ... Antworten mit Zitat

@TheMillenium

Lieber einmal der Soll-Philosophie eines Frage-Antwort-Forums folgen und eine ausführliche Antwort mit Beispiel,
oder aber der (leider) gängigen Philosophie folgen und "Copy'n Paste"-Auszüge der jedem zugänglichen (zumeist für Anfänger kryptischen) Hilfebibliotheken posten?

Was ergibt mehr Sinn???

---------------------------------------------------------------------------------------------------------------------------------
Zitat:

...dass einer hier denken mag, wir alle wären dumm...

Stell Dir vor, in einem Seminar liesst der Tutor lediglich aus einem "C++-Taschenbuch" Funktionsköpfe+Parameter vor und erklärt sie WEDER an einem Beispiel noch was sie GENAU bewirken, weil er ja davon ausgehen muss, das mindestens EINER in der Zuhörergruppe die Funktion und deren Funktionsweise kennt!

Was ist hier falsch???

-------------------------------------------------------------------------------------------------------------------------------

BTW Konflikte beruhen auf Missverständnissen! Ich glaube Du hast meinen Post falsch aufgefasst, und ich Deinen darauf folgenden Beitrag missverstanden. Wink

mfG
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Revil
Senior JLI'ler



Anmeldedatum: 28.07.2002
Beiträge: 242

Medaillen: Keine

BeitragVerfasst am: 12.06.2003, 11:03    Titel: Antworten mit Zitat

Ich finde die Ausführung zeugt davon das sich hier jemand ernsthaft darum bemüht eine Frage ausführlich zu klären, und sowas seh ich als bewunderns-/erstrebenswert an.
_________________


Take this
Code:
php -r "print rand(-1,0)?Gewonnen:Verloren;"

and this
Code:
perl -e "print( ('Gewonnen', 'Verloren')[rand 2])"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 12.06.2003, 20:20    Titel: Antworten mit Zitat

Ich bezihe mich eigentlich nur auf den Text nach deinem ersten Zitat:
Zitat:

Hier ist ein
laaaaaaaaaaaaaaaaaa
aaaaaaaaanges Wort


Davor fand ich das schon gut genug erklärt, aber hast schon Recht: Schaden kann es ja nicht! Smile

Naja Copy & Past von Bibliotheken/... finde ich eigentlich meist besser, wenn das schon selbsterklärend genug ist, ansonsten so wie du es gemacht hast, ist es dann perfekt, aber da kann man sich streiten! Wink

Aber die Funktion ist eigentlich schon praktisch..hatte sowas davor für mein eines Skript selber programmieren muss...naja man lernt immer weiter... Very Happy
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum