 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
19.09.2004, 00:22
|
#1
|
|
TP-Junior
Registriert seit: Sep 2004
Ort: Deutschland
|
Nach xx Zeilen "..." anzeigen
Tach leute...
ich habe mal wieder nen kleines Prob...
Hier mal mein Design, für meine Homepage, das ich bald online stellen werde:
Klick hier!
so, nun sind oben ja die lastnews...
nun brauche ich aber etwas, das "..." (pünktchen) anzeigt, wenn die news aus zu vielen zeilen bestehen, weil sich sonst das ganze design verschiebt...
ich denke mal, dass man das mit "preg_replace()" machen kann...
Code:
function kpl_wrap_words($TEXT, $WIDTH) {
$WIDTH = $WIDTH - 1;
if($TEXT) return preg_replace("/([^\n\r ?&\.\/<>\"\\-]{".$WIDTH."})/i"," \\1<br>", $TEXT);
}
das hier z.B. trennt die Zeilen nach einer bestimmten anzahl an Buchstaben, die man mit $WIDTH einstellen kann...
aber ich will ja, dass dann nur "..." nach einer bestimmten anzahl an zeilen angezeigt werden, und der rest dann nicht mehr angezeigt wird...
Weiß jemand was ich meine?
weiß jemand, wie das geht?
Danke schonmal!
MFG
Zeussi
|
|
|
19.09.2004, 00:28
|
#2
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Hmm....
meinst Du nicht, daß Du mit strlen() und substr() wesentlich einfacher zum Ziel kommst? Also:
if ( strlen( $String ) > $Maximum ) { print substr( $String,0,$Maximum ) ."..." }
oder so ähnlich - 's ist scho spät....
EDIT
ups - sehe gerade: Anzahl Zeilen.... 
|
|
|
19.09.2004, 00:37
|
#3
|
|
TP-Junior
Registriert seit: Sep 2004
Ort: Deutschland
|
hhmm.. ja im grunde suche ich sowas ähnliches...
nur das nach bestimmten anzahl an zeilen die punkte angezeigt werden und nicht nach bestimmten anzahl an Buchstaben...
du hast übrigens ein ";" vergessen
EDIT
Oder weiß vllt. jemand anderes ne Lösung?
Geändert von Zeussi (19.09.2004 um 00:43 Uhr).
|
|
|
19.09.2004, 01:17
|
#4
|
|
TP-Member
Registriert seit: Sep 2004
Ort: Odenwald
|
Wieso machst du es denn nicht, wie dir webmichl geraten hat? Nicht die Zeilen, sondern die Zeichen zählen - und dann entsprechend nach einer bestimmten Anzahl abschneiden? Macht meiner Meinung nach mehr Sinn.
Mit Zeilen kannst du es wie folgt realisieren:
PHP-Code:
$Text = 'Hallo,<br />
dies ist ein<br />
test!!<br />';
$Zeilen = explode("\n", $Text);
bzw so:
PHP-Code:
$Text = 'Hallo,<br />
dies ist ein<br />
test!!<br />';
$Zeilen = explode("<br />", $Text);
Anschließend, via Schleife jeden Array-Wert, welcher kleiner als deine gewünschte Zeilenanzahl ist, ausgeben.
Wenn du noch den dritten Parameter der Funktion explode angibst (limit), kannst du die Beschränkung auf eine bestimmte Anzahl von Zeilen noch schneller integrieren:
Zitat:
...
$Text2 = explode("\n", $Text, 3);
...
|
mfg
Odin
Geändert von -=Odin=- (19.09.2004 um 01:25 Uhr).
|
|
|
19.09.2004, 01:46
|
#5
|
|
TP-Junior
Registriert seit: Sep 2004
Ort: Deutschland
|
jau... habe jetzt mal deine idee übernommen und nen bisschen erweitert...
meine kleine test datei funzt:
PHP-Code:
<?php
$Text = 'Hallo,<br />
dies ist ein<br />
test!!<br />
test1!!<br />
test2!!<br />
test3!!<br />';
$Text2 = explode("\n", $Text);
for($i=0; $i<count($Text2);$i++){
if($i<7) {
echo $Text2[$i];
}
}
if($i>7) {
echo "...";
}
?>
nur klappt das hier jetzt nicht
PHP-Code:
<?php
$kpl_news_data1['datei'] = kpl_read_file("data/news_system/news.dat");
$arr = explode("|***|", $kpl_news_data1['datei']);
for($i = 0; $i < count($arr) - 1; $i++) {
if($i >= "0" AND $i < "1") {
$arr2 = explode("|*|", $arr[$i]);
$kpl_news_data1['date'] = date("d.m.Y, H:i", $arr2[3]);
$kpl_news_data1['ueberschrift'] = $arr2[1];
$kpl_news_data1['name'] = $arr2[0];
$kpl_news_data1['news'] = $arr2[2];
$kpl_news_data1['id'] = $arr2[3];
$kpl_news_data_1 = explode("\n", $kpl_news_data1['news']);
for($j=0; $j<count($kpl_news_data_1);$j++) {
if($j<7) {
$kpl_news_data1['news'] = $kpl_news_data_1[$j];
}
}
if($j>7) {
$kpl_news_data1['news'] .= "<br><a href\"".$config['url']."/index.php?action=comments&id=".$kpl_news_data1['id']."[...]";
}
}
}
?>
ab zeile 12 beginnt in etwa der veränderte teil...
was mache ich falsch?
|
|
|
19.09.2004, 19:47
|
#6
|
|
TP-Junior
Registriert seit: Sep 2004
Ort: Deutschland
|
http://www.bracht-online.de/neu/index.php
da geh mal drauf...
und guck dir oben die latest news an...
normalerweise sollten sie so aussehen, wie die obersten news im main bereich, nur das halt nur 7 Zeilen angezeigt werden sollten...
hier mal der code:
Code:
$kpl_news_data1['datei'] = kpl_read_file("data/news_system/news.dat");
$arr = explode("|***|", $kpl_news_data1['datei']);
for($i = 0; $i < count($arr) - 1; $i++) {
if($i >= "0" AND $i < "1") {
$arr2 = explode("|*|", $arr[$i]);
$kpl_news_data1['date'] = date("d.m.Y, H:i", $arr2[3]);
$kpl_news_data1['ueberschrift'] = $arr2[1];
$kpl_news_data1['name'] = $arr2[0];
$kpl_news_data1['news'] = $arr2[2];
$kpl_news_data1['id'] = $arr2[3];
$kpl_news_data_1 = explode("<br>", $kpl_news_data1['news']);
for($j=0; $j<count($kpl_news_data_1);$j++) {
if($j<7) {
$kpl_news_data1['news'] = $kpl_news_data_1[$j];
}
}
}
}
und HIER mal die Datei, in die gespeichert wird...
Hoffe, ihr könnt mir helfen!
MFG
Zeus
|
|
|
19.09.2004, 21:35
|
#7
|
|
TP-Member
Registriert seit: Sep 2004
Ort: Odenwald
|
Das kann nicht gehen. In der unteren For-Schleife weist du der Variable $kpl_news_data1['news'] immer wieder einen neuen String zu.
Versuch's mal hiermit:
Code:
$kpl_news_data1['datei'] = kpl_read_file("data/news_system/news.dat");
$arr = explode("|***|", $kpl_news_data1['datei']);
for($i = 0; $i < count($arr) - 1; $i++) {
if($i = "0") {
$arr2 = explode("|*|", $arr[$i]);
$kpl_news_data1['date'] = date("d.m.Y, H:i", $arr2[3]);
$kpl_news_data1['ueberschrift'] = $arr2[1];
$kpl_news_data1['name'] = $arr2[0];
$kpl_news_data1['news'] = $arr2[2];
$kpl_news_data1['id'] = $arr2[3];
$kpl_news_data_1 = explode("<br>", $kpl_news_data1['news'], 7);
echo implode('<br>', $kpl_news_data1['news']);
}
}
Auch ist mir diese If-Abfrage schleierhaft:
Zitat:
|
if($i >= "0" AND $i < "1") {
|
Größer/gleich NULL, und zugleich kleiner als EINS?? Die einzig nötige Aussage würde wie folgt lauten:
Script (noch) nicht überprüft, sollte aber funktionieren...
mfg
Odin
|
|
|
19.09.2004, 23:32
|
#8
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
öhm...darf ich?
triffts glaub ich eher...
PS und OT:
Odin hilft Zeus - einfach göttlich....  
|
|
|
21.09.2004, 13:19
|
#9
|
|
TP-Junior
Registriert seit: Sep 2004
Ort: Deutschland
|
hhmm... funzt immer noch nicht... jetzt gibt er mit nen "Warning: implode(): Bad arguments. in C:\xampp\htdocs\neu\include\header.inc.php on line 138" aus!
aber da hattest du noch nen fehler...
funzt dann aber trotzdem noch nicht!
warum willst du das unbedingt mit limit bei explode machen?
das geht nicht... schlecht zu erklären, aber probier das mal aus, dann siehste was ich meine:
PHP-Code:
<?php
$data = "Hallo1|*|Hallo2|*|Hallo3|*|Hallo4|*|Hallo5|*|Hallo6|*|Hallo7|*|";
$arr = explode("|*|", $data, 3);
$arr2 = implode("<br>", $arr);
echo $arr2;
?>
das muss doch irgendwie gehen, dass man das nach zeilen trennen kann...
PS: Ist schon witzig, dass er mir Hilft... 
|
|
|
21.09.2004, 15:50
|
#10
|
|
TP-Member
Registriert seit: Sep 2004
Ort: Odenwald
|
Stimmt, der übrige Teil wird nicht gelöscht - wovon ich ausgegangen bin - sondern an letzter Stelle des Arrays platziert.
D.h. entsprechenden Teil manuell aus Array löschen, oder auf eine For-Schleife umsteigen, mein Fehler, sorry.
In obigem Bsp:
PHP-Code:
$data = "Hallo1|*|Hallo2|*|Hallo3|*|Hallo4|*|Hallo5|*|Hallo6|*|Hallo7|*|";
$arr = explode("|*|", $data);
for ($i = 0; $i <= 3; $i++) {
$new .= '<br>'.$arr[$i];
}
echo $new;
mfg
Odin
|
|
|
21.09.2004, 19:46
|
#11
|
|
TP-Junior
Registriert seit: Sep 2004
Ort: Deutschland
|
heidiwitzka
du hast mir grade zu meiner lösung verholfen!
ich idiot habe nur einen punkt vergessen!
Code:
<?php
$kpl_news_data1['datei'] = kpl_read_file("data/news_system/news.dat");
$arr = explode("|***|", $kpl_news_data1['datei']);
for($i = 0; $i < count($arr) - 1; $i++) {
if($i == "0") {
$arr2 = explode("|*|", $arr[$i]);
$kpl_news_data1['date'] = date("d.m.Y, H:i", $arr2[3]);
$kpl_news_data1['ueberschrift'] = $arr2[1];
$kpl_news_data1['name'] = $arr2[0];
$kpl_news_data1['news1'] = $arr2[2];
$kpl_news_data1['id'] = $arr2[3];
$kpl_news_data_1 = explode("<br>", $kpl_news_data1['news1']);
for($j=0; $j<count($kpl_news_data_1);$j++) {
if($j<3) {
$kpl_news_data1['news'] .= "<br>".$kpl_news_data_1[$j];
}
}
}
}
?>
nach dem $kpl_news_data1['news'] der punkt hat es gebracht... ich habe gar nicht dran gedacht, den zu setzen!
jetzt zur nächsten sache^^
wie mache ich jetzt nen link ("[Mehr]" oder ähnlich) dahinter, wenn die news wirklich länger als 3 Zeilen sind?
der link sollte an die news gehängt werden und sollte so aussehen:
"<a href=\"".$config['url']."/index.php?action=comments&id=".$kpl_news_data1['id']."\"[Mehr]</a>";
wie muss ich das da dran setzen? habe es schon versucht, aber dann wird das nach der ersten zeile angezeigt, oder nach jeder zeile einmal...
oder sollte ich da am besten dann noch ne neue Variable benutzen, und die dann einfach hintendran hängen? Das dann der Link angezeigt wird, wenn mehr als 3 Zeilen da sind und wenn nicht, dann nicht?
MFG
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:37 Uhr.
|
 |