Texte abkürzen mit PHP

  • #1
N

noah1

Bekanntes Mitglied
Themenersteller
Dabei seit
16.08.2002
Beiträge
1.415
Reaktionspunkte
0
Ort
Hamburg
Hallo, ich stehe wieder vor einem Problem...
Das unten stehende Script sol dazu dienen auf der Startseite in einer Tabellenzelle den letzten Eintrag der Tabelle, quasi als Vorschau abzubilden.
Da die Tabellenzelle aber nur begrenzt Platz bietet möchte ich das gerne so darstellen daß zum Einen in der ersten Zeile,

Code:
echo<b>Letzter Einsatz:  </b>;
					echo<b>$datum $schada</b><br><hr>;

der Text nach einer bestimmten Anzahl Buchstaben abgekürzt wird (...) und in der zweiten Zeile

Code:
echo$einsatz;

dann der Text ebenfalls abgekürzt wird und ein Link angehängt wird (...weiter).
Ist das umständlich zu schreiben oder läßt sich das recht einfach realisieren?
Wenn ja, wie?
Schonmal danke...


Code:
	include(save/dbconnect.inc.php);
		$sql = mysql_query(SELECT * FROM einsaetze order by datum DESC LIMIT 1);
			if (empty($sql)){
				 echo<table class=\einsaetze\>;
					 echo<tr>;
				 echo<td class=\schada\ colspan=\2\>Kein Eintrag vorhanden !</td>;
				 echo</tr>;
				 echo</table>;				
				}
			else{
			while ($ds = mysql_fetch_object($sql)){
					$id = $ds -> id;
					$amidatum = $ds -> datum;
					$dat=split(-,$amidatum);
					$datum=$dat[2]...$dat[1]...$dat[0];
					$schada = $ds -> schada ;
					$einsatz = $ds -> einsatz;
					echo<b>Letzter Einsatz:  </b>;
					echo<b>$datum $schada</b><br><hr>;
					echo$einsatz;	
					}
					}
 
  • #2
Hier nimmst du am besten substr

http://de.php.net/substr

Beschreibung:
string substr ( string string, int start [, int length] )

substr() gibt den Teil von string zurück, der durch die Parameter start und length definiert wurde.

Wenn start positiv ist, beginnt der zurück gegebene String an der start-Position von string, angefangen bei NULL. So ist z.B. im String->abcdef' das Zeichen an der Position 0 gleich->a', das Zeichen an der Position 2 ist->c' usw.

Dein Beispiel:

Zeile 1 (z.B. die ersten 20 Zeichen)

Code:
<?php
...
echo<b>Letzter Einsatz:  </b>;
echo<b>$datum . substr($schada, 0, 20) .</b><br><hr>;
...
?>

Zeile 2 (z.B. die ersten 50 Zeichen)

Code:
<?php
...
echo substr($einsatz, 0, 50) . <a href='detail_seite.php?datensatz=. $id.>Mehr Info</a>';
...
?>

Auf der Detailseite kannst du dann die übergebene ID direkt aus der DB abfragen. ;)

gruss conny

edit: fast den Link vergessen :'(
 
  • #3
Danke schonmal, das funktioniert.
Aber wie kann ich die Buchstaben zählen, daß am Ende, falls es z.B. mehr als 40 sind Punkte angehängt werden?
Falls der Text durch substr nicht gekürzt wird, weil er nicht länger als das Feld ist brauche ich die Punkte ja nicht, deshalb würde ich es gerne automatisch machen.
 
  • #4
Beschreibung:

int strlen ( string str )

Gibt die Länge der Zeichenkette string zurück.

http://de3.php.net/strlen

Code:
<?php
...
// Ist der String $einsatz länger als 40 Zeichen, nehme die erstem 36 Zeichen
// und hänge hinten einen Space und 3 Punkte an.
// wenn nicht belasse $einsatz so wie er ist.
$text = (strlen($einsatz) > 40) ? substr($einsatz, 0, 36).  ... : $einsatz;

echo $text . <a href='detail_seite.php?datensatz=. $id.>Mehr Info</a>';
...
?>

gruss conny

edit: 36 weil du mit Space und 3 Punkten wieder auf 40 kommst ;) ;)
 
  • #5
Ich glaube ich hab es jetzt, zwar nicht ganz so wie Du es geschrieben hättest aber das Ergebnis stimmt...


260199331a486d75e3cb690d87967e0e.jpg

 
  • #6
Hauptsache es klappt ;) ;)

Viele Wege führen nach Rom, warum sollte der eine Richtig sein und der andere Falsch ???

OK, der eine ist evtl. ein paar km länger als der andere, aber das ist nicht Kriegsentscheident ;)
 
  • #7
Wobei es nicht schaden kann den Code kurz zu halten.
Allerdings ist es für mich übersichtlicher, wenn die Befehle einzeln dastehen und nicht zu stark abgekürzt werden.

Jetzt kommt gerade das nächste Problem auf mich zu: Das Admin-Menü.
Links im Menü befindet sich ein Login für den Admin.
Wenn man dort Benutzername und Passwort eingegeben hat werden die per-> POST' an ein Script übergeben und es kommt kommt dort anstatt des Logins ein weiteres Menü mit Admin-Optionen.(Sofern die Daten richtig waren, wenn nicht passiert gar nichts...)
Damit nicht jeder an das Admin-Menü bzw. die Admin-Optionen kommt wollte ich das per Cookie steuern - wenn die richtigen Daten eingegeben wurden wird ein Cookie erstellt, aber auch nur dann.
Und wenn das Cookie vorhanden ist wird das Admin Menü angezeigt. Funktioniert auch.
Weiter soll bei jedem Aufruf einer für den Admin gedachten Seite geprüft werden ob das Cookie da ist, wenn nicht dann soll automatisch die Startseite aufgerufen werden.
Aber wenn ich den Link für ein Admin-Formular direkt eingebe dann kommt auch die Seite, ob das Cookie nun da ist oder nicht...
Jetzt versuche ich das gerade mit->session() zu machen...
Wenn ich nicht weiter komme hört Ihr von mir...
 
Thema:

Texte abkürzen mit PHP

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.836
Beiträge
707.957
Mitglieder
51.488
Neuestes Mitglied
elkhse
Oben