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 ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. 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 für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11.07.2006, 16:48:21
Benutzerbild von pRoPh3t
pRoPh3t pRoPh3t ist offline
Anfänger
 
Registriert seit: Jul 2006
Ort: Bergneustadt - NRW
Alter: 37
Beiträge: 26
textarea - string teilen - zeilenumbruch beim ganzen wörtern- konzept gesucht

hallo
bevor die kommentare kommen, ich sollte die suche benutzen kann ich euch beruhigen, dass habe ich gemacht und sie hat mir auch weitergeholfen, jedoch bleibt ein problem weiterhin bestehen.

ich bin gerade dabei ein news system für meine page zu basteln.
dies besteht aus einem formular welches ein textfeld und eine textarea beinhaltet.
die überschrift und der text werden eingegeben und in einem bestimmten bereich wieder ausgegeben. mein poblem besteht jedoch in der formatierung.
ich nehme die werte aus der textarea per request[textarea] und gebe diese mit nl2br(trim($content)) wieder aus. die formatierung also absätze und zeilenumbrüche werden dabei schön eingehalten sodass mein layout nicht zerstört wird.
wenn jedoch ein user 100x "W" eingeben würde, ohne eine leerzeile zu benutzen würde das über den bereich herausgehen und entweder mein layout zerstören weil meine tabelle in die breite gezogen wird oder aber ich setze die css eigenschaft overflow: hidden, was mir den zu breiten text abschneiden würde.
beide möglichkeiten sind aber nicht gerade die beste lösung, mir wäre am liebsten wenn ich wörter, die länger als 50 zeichen sind, nach dem 50. zeichen mit einem bindestrich versehen und einen zeilenumbruch erzwingen könnte.
es gibt zwas die funktion wordwrap, diese bezieht sich aber immer auf ganze zeilen: sprich es wird ein zeilenumbruch nach 50 zeichen gesetzt, egal ob es sich um ein wort handelt, oder um einen ganzen satz. ich möchte jedoch dass nowrap nur bei kompletten wörtern zum zuge kommt.

beispiel mit wordwrap 50:

dies ist ein satz der fünfzig zeichen haben sollte
nachdem kein zeilenumbrich stattfinden sollte !!!!!
!!!!

nur bei:

WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWW


hier noch ein auszug aus dem quelltext, denke aber das dieser eher unrelevant ist, da es nur ein auszug ist und ich ja kein problem mit dem quelltext ansich habe. kann im moment leider keine onlinedemo erstellen, da ich noch zwei monate im ausland bin, und auf der arbeit aufgrund des proxys nicht an meinen webspace kommen kann.

switch($show[0]) {
case "1":
if( $show[submit2] == "true" ) {
if( $show[head] == "false" || $show[content] == "false" || $show[database] == "false") {
print ' <ul class="ul_error_edit_news">Folgende Fehler sind aufgetreten';
if( $show[database] == "false" ) {
print '<li class="li_error_edit_news">Es ist ein Fehler bei der Verbindung zur Datenbak aufgetreten, bitte probiere es sp&auml;ter nocheinmal. Sollte dieser Fehler wiederholt auftreten, wende dich bitte an den Webmaster</li>';
}
else {
if( $show[head] == "false" ) { print '<li class="li_error_edit_news">Es wurde keine &Uuml;berschrift angegeben</li>'; }
if( $show[content] == "false" ) { print '<li class="li_error_edit_news">Es wurde kein Inhalt angegeben</li>'; }
}
print ' </ul>';
}
else {
print ' <table id="edit_news">
<tr>
<td class="edit_news_1_td">
'.$head.'
</td>
<td class="edit_news_2_td">
'.date("d.m.y - G:i", $time).'
</td>
</tr>
<tr class="edit_news_tr">
<td class="edit_news_3_td" colspan="2">
<p class="text_2_edit_news">'.nl2br(trim($content)).'</p>
</td>

</tr>
<tr>
<td class="edit_news_1_td" colspan="2">
autor
</td>
</tr>
</table>';
}
}
if( $show[submit3] == "true" ) {
if( $show[head] == "false" || $show[content] == "false" || $show[database] == "false" ) {
print ' <ul class="ul_error_edit_news">Folgende Fehler sind aufgetreten';
if( $show[database] == "false" ) {
print '<li class="li_error_edit_news">Es ist ein Fehler bei der Verbindung zur Datenbak aufgetreten, bitte probiere es sp&auml;ter nocheinmal. Sollte dieser Fehler wiederholt auftreten, wende dich bitte an den Webmaster</li>';
}
else {
if( $show[head] == "false" ) { print '<li class="li_error_edit_news">Es wurde keine &Uuml;berschrift angegeben</li>'; }
if( $show[content] == "false" ) { print '<li class="li_error_edit_news">Es wurde kein Inhalt angegeben</li>'; }
}
print ' </ul>';
}
else {
print ' <ul class="ul_result_edit_news">News-Eintrag erfolgreich
<li class="li_result_edit_news">Der News-Eintrag wurde erfolgreich in der Datenbank gespeichert</li>
</ul>';
}
}
if( $show[1] != "true" ) {
print ' <p class="text_1_edit_news">Trage in dass erste Feld eine geeignete &Uuml;berschrift f&uuml;r den News-Eintrag ein und verfasse im Textfeld den News-Artikel. Bitte achte auch auf deine Rechtschreibung. Anschließend kannst du den News-Eintrag per klick auf Bereicht erstellen online stellen. Falls du nachtr&auml;glich &Auml;nderungen an deinem Eintrag vornehmen willst, kannst du dass indem du in deiner Benutzerumgebung auf News verwalten gehts, und im folgendem Auswahlmen&uuml; vorhandenen News-Eintrag bearbeiten ausw&auml;hlst. </p>
<form id="edit_news" action="'.$_SERVER['PHP_SELF'].'?content=edit_news" method="post">
<input class="inputfield_edit_news" type="text" name="head_edit_news" value="'.$head.'"/>
<textarea class="textarea_edit_news" name="content_edit_news">'.$content.'</textarea>
<input class="button_2_edit_news" type="submit" name="submit_2_edit_news" value="Vorschau anzeigen" />
<input class="button_2_edit_news" type="submit" name="submit_3_edit_news" value="Bericht erstellen" />
</form>';
}
break;

für lösungsvorschläge wäre ich sehr dankbar, also hinweise auf geeignete funktionen oder komplette lösungsvorschläge...
auch andere konzepte wie es möglich ist, fehleingaben bzw. müll, der durch fehlerhafte usereingaben im bezug auf textfelder entseht, zu umschiffen.

mfg
matthias
Mit Zitat antworten
  #2  
Alt 11.07.2006, 19:02:11
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: textarea - string teilen - zeilenumbruch beim ganzen wörtern- konzept gesucht

Vielleicht kannst du solche Sachen mit preg_match() oder preg_match_all() aufspüren und darauf reagieren.
Würde an deiner Stelle auch den Text auf Zeilenumbrüche überprüfen und eventuell doppelte oder zu viele aufeinander folgende Umbrüche entfernen. Ansonsten kann man dir die Seite mit lauter Zeilenumbrüchen extrem lang machen.
__________________
Grüße Andes
Mit Zitat antworten
  #3  
Alt 11.07.2006, 19:46:49
Benutzerbild von Serp
Serp Serp ist offline
Member
 
Registriert seit: Mar 2005
Alter: 39
Beiträge: 579
AW: textarea - string teilen - zeilenumbruch beim ganzen wörtern- konzept gesucht

Versuchs mal mit

PHP-Code:
$text preg_replace('/(\S{50})(\S)/''$1 $2'$text); 
Die Funktion, die die Umbrüche nicht hart nach 50 Zeichen reinballert, sondern das versucht, schön aufzuteilen, sei dir selbst überlassen. preg_replace_callback in Verbindung mit create_function könnte hier weiterhelfen, führt aber sehr schnell zu pervers unübersichtlichem Code...
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')

Für 100% sauberen Code.
Mit Zitat antworten
  #4  
Alt 12.07.2006, 11:05:28
Benutzerbild von pRoPh3t
pRoPh3t pRoPh3t ist offline
Anfänger
 
Registriert seit: Jul 2006
Ort: Bergneustadt - NRW
Alter: 37
Beiträge: 26
AW: textarea - string teilen - zeilenumbruch beim ganzen wörtern- konzept gesucht

danke für eure schnellen antworten, insbesondere für die funktion preg_replace, die köst genau mein problem...

@serp!
wäre noch sehr nett von dir, wenn du mir die parameter noch erklären könntest, ich hab mir zwar die seite php.net/preg_replace angesehen, aber naja :)

{50} ist die entsprechende zeichenlänge, das ist klar aber steht das s davor steht für string? also suche string mit der länge von 50?! aber weiter haperts bei mir etwas.
wäre echt noch ein super ding wenn du mir die syntax und die parameter noch erläutern könntest...wenn das nicht zuviel ist!
zudem fügt die funktion eine leerzeile nach 50 zeichen ein, wie muss diese verändert werden um einen zeilenumbruch zu erhalten?

mfg
matthias

Geändert von pRoPh3t (12.07.2006 um 11:45:03 Uhr)
Mit Zitat antworten
  #5  
Alt 12.07.2006, 14:43:42
sysop sysop ist offline
Member
 
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
AW: textarea - string teilen - zeilenumbruch beim ganzen wörtern- konzept gesucht

vielleicht kaommt auch das hier in frage wordwrap
Mit Zitat antworten
  #6  
Alt 12.07.2006, 15:18:33
Benutzerbild von Serp
Serp Serp ist offline
Member
 
Registriert seit: Mar 2005
Alter: 39
Beiträge: 579
AW: textarea - string teilen - zeilenumbruch beim ganzen wörtern- konzept gesucht

\S steht für ein Zeichen, das kein Whitespace ist. Es wird also eine zusammenhängende Zeichenkette ohne Leerzeichen, Tabulatoren oder Zeilenumbrüche gesucht, die aus 50 Zeichen besteht. (Man beachte übrigens das große S, mit kleinen s werden Whitespaces gesucht, also das genaue Gegenteil.)

Wenn du einen harten Zeilenumbruch haben willst und kein Leerzeichen (was ich für sinnvoller erachtet hätte, da der Browser da dann bei Bedarf umbricht), muss der zweite Parameter $1\n$2 lauten.
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')

Für 100% sauberen Code.
Mit Zitat antworten
  #7  
Alt 12.07.2006, 15:20:02
Benutzerbild von pRoPh3t
pRoPh3t pRoPh3t ist offline
Anfänger
 
Registriert seit: Jul 2006
Ort: Bergneustadt - NRW
Alter: 37
Beiträge: 26
AW: textarea - string teilen - zeilenumbruch beim ganzen wörtern- konzept gesucht

Zitat:
Zitat von sysop
vielleicht kaommt auch das hier in frage wordwrap
Zitat:
Zitat von pRoPh3t
es gibt zwas die funktion wordwrap, diese bezieht sich aber immer auf ganze zeilen: sprich es wird ein zeilenumbruch nach 50 zeichen gesetzt, egal ob es sich um ein wort handelt, oder um einen ganzen satz. ich möchte jedoch dass ein zeilenumbruch nur bei kompletten wörtern zum zuge kommt.]
aber trotzdem danke für deine bemühung :)

mfg
matthias
Mit Zitat antworten
  #8  
Alt 12.07.2006, 15:37:52
Benutzerbild von pRoPh3t
pRoPh3t pRoPh3t ist offline
Anfänger
 
Registriert seit: Jul 2006
Ort: Bergneustadt - NRW
Alter: 37
Beiträge: 26
AW: textarea - string teilen - zeilenumbruch beim ganzen wörtern- konzept gesucht

Zitat:
Zitat von Serp
Wenn du einen harten Zeilenumbruch haben willst und kein Leerzeichen (was ich für sinnvoller erachtet hätte, da der Browser da dann bei Bedarf umbricht), muss der zweite Parameter $1\n$2 lauten.
...funktioniert leider nicht, in dem fall also
'.nl2br(trim(preg_replace('/(\S{42})(\S)/', '$1\n$2', $content))).'
erfolgt leider kein zeilenumbruch nach 50 zeichen, das stuerzeichen wird mitausgegeben und der inhalt geht über die tabellenbegrenzung herraus... kann es sein das die parameter '$1\n$2' so nicht stimmen?
habe es auch schon mit einer leerzeile also '$1 \n$2' veruscht aber auch ohne erfolg!
ich meine das steuerzeichen \n steht ja eigentlich für einen zeilenumbruch und müsste durch nl2br ja zu einem <br /> umgewandelt werden, jedoch erscheint im anzeigebereich bei einer eingabe in der textarea von zB.
"WWWWWWWWWWWWWW...50x....XXXXX"
ausgabe:
"WWWWWWWWWWWWWW...50x...\nXXXX"
und es wird kein zeilenumbrch erzielt! das steuerzeichen \n wird einfach mitausgegeben.
habe die funktionen auch schon geteilt, aber auch ohne erfolg:

$content2 = preg_replace('/(\S{42})(\S)/', '$1\n$2', $content)
'.nl2br(trim($content2)).'

auch in diesm fall wird das steurzeichen einfach mit ausgegeben und nicht in ein <br /> umgewandelt

@serp
ich hoffe du schaust hier heute nochmal vorbei :D

mfg
matthias
Mit Zitat antworten
  #9  
Alt 12.07.2006, 15:44:17
Benutzerbild von Serp
Serp Serp ist offline
Member
 
Registriert seit: Mar 2005
Alter: 39
Beiträge: 579
AW: textarea - string teilen - zeilenumbruch beim ganzen wörtern- konzept gesucht

Wah! Ich depp, ich, is ja HTML...

Nimm einfach direkt '$1<br />$2'...

Funktionieren mit \n würde es, wenn du statt der einfachen Anführungszeichen doppelte nimmst, also "$1\n$2". Nur hab ich mir die einfachen mittlerweile schon so angewöhnt, dass ich da im ersten Moment gar nicht mehr dran denk...
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')

Für 100% sauberen Code.
Mit Zitat antworten
  #10  
Alt 12.07.2006, 16:10:02
Benutzerbild von pRoPh3t
pRoPh3t pRoPh3t ist offline
Anfänger
 
Registriert seit: Jul 2006
Ort: Bergneustadt - NRW
Alter: 37
Beiträge: 26
AW: textarea - string teilen - zeilenumbruch beim ganzen wörtern- konzept gesucht

dank dir serp, funzt nu alles wunderbar!!!
kann als neues mitglied in diesem forum nur ein lob aussprechen
nette leute und schnelle hilfe :D

ps: gibt es irgendwo eine erläuterung für die verschiedenen parameter der funktion preg_replace auser die auf php.net? finde dort keine liste der möglichen parameter, kann es sein das die parameter nicht funktions-spezifisch sind sondern für mehrere funktionen gelten?
damit meine ich \S, \s usw...
kann ich die paramter unter einem bestimmten stichwort doch auf php.net finden?
sorry das ich so doof frage, aber bin noch mehr oder weniger php newb was string bearbeitung angeht.

...und nochmals danke für das nette backup bis hierhin... ;)

mfg
matthias
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Text in Textarea inserten mit Zeilenumbruch dino-it PHP Grundlagen 2 14.03.2006 17:54:35
Zeilenumbruch in textarea Hondo PHP Grundlagen 2 22.05.2004 11:01:11
Textarea und ungewollter Zeilenumbruch durch Enter Lars_oha PHP für Fortgeschrittene und Experten 7 14.05.2004 18:43:40
textarea giebt Zeilenumbruch nicht weiter andreaskf PHP Grundlagen 4 12.05.2004 17:11:36
String teilen. mit ereg? Rapha PHP für Fortgeschrittene und Experten 2 14.01.2004 11:50:43


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


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


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