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

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |

11.07.2006, 15:48:21
|
 |
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Bergneustadt - NRW
Alter: 38
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ä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 Ü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ä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 Ü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 Überschrift fü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äglich Änderungen an deinem Eintrag vornehmen willst, kannst du dass indem du in deiner Benutzerumgebung auf News verwalten gehts, und im folgendem Auswahlmenü vorhandenen News-Eintrag bearbeiten auswä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
|

11.07.2006, 18:02:11
|
Member
|
|
Registriert seit: Jun 2006
Ort: Bayern
Alter: 57
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
|

11.07.2006, 18:46:49
|
 |
Member
|
|
Registriert seit: Mar 2005
Alter: 40
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.
|

12.07.2006, 10:05:28
|
 |
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Bergneustadt - NRW
Alter: 38
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 10:45:03 Uhr)
|

12.07.2006, 13:43:42
|
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
|

12.07.2006, 14:18:33
|
 |
Member
|
|
Registriert seit: Mar 2005
Alter: 40
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.
|

12.07.2006, 14:20:02
|
 |
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Bergneustadt - NRW
Alter: 38
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
|

12.07.2006, 14:37:52
|
 |
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Bergneustadt - NRW
Alter: 38
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
|

12.07.2006, 14:44:17
|
 |
Member
|
|
Registriert seit: Mar 2005
Alter: 40
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.
|

12.07.2006, 15:10:02
|
 |
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Bergneustadt - NRW
Alter: 38
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
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 00:15:21 Uhr.
|