php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Text nach x Zeichen kürzen


 
chefdesigner
13-11-2005, 23:51 
 
Ich gebe mit Hilfe einer while-Schleife 10 Datenbankeinträge in einer Tabelle aus. Da bei einigen dieser Einträge die Texte zu lang sind, wollte ich diese nach x Zeichen kürzen.

Dazu verwende ich folgende Funktion:

function TextAbschneiden($Text, $Laenge)
{
return substr($Text, 0, strpos(wordwrap($Text, $Laenge, "*!U-M-B-R-U-C-H*"), "*!U-M-B-R-U-C-H*"));
}

Danach kommt meine while-Schleife:

$sql = mysql_query("SELECT * FROM datenbank WHERE downloads IS NOT NULL ORDER BY lastdownload DESC LIMIT $limit");
while($row = mysql_fetch_array($sql)){
$Text = $row['title'];
$Laenge = "70";
$title = TextAbschneiden($Text, $Laenge);
echo $title;


Leider funktioniert das Script nicht so wie ich mir das vorgestellt habe. Problem ist, dass bei einer Länge von 70 Zeichen gar nichts angezeigt wird, bei einer Länge von 40 Zeichen dagegegen, werden ein paar Einträge angezeigt.

Kann mir jemand sagen was ich falsch gemacht habe?

 
TobiaZ
13-11-2005, 23:54 
 
debugging -angaben?

 
chefdesigner
14-11-2005, 19:40 
 
Das Problem ist, dass ich keine Fehlermeldung erhalte. Es wird einfach nicht korrekt angezeigt.

 
onemorenerd
14-11-2005, 20:04 
 
Was schlägst du da mit wordwrap() um dich?

Du hast einen String unbekannter Länge.
Wenn der länger als x Zeichen ist, soll er auf x Zeichen gekürzt werden.

In PHP übersetzt:
$text = 'whatever';
if (strlen($text) > $x) $text = substr($text, 0, $x);

 
TobiaZ
14-11-2005, 22:24 
 
@nerd: denke mal, dass er nicht mitten im Wort abschneiden will.

 
Abraxax
14-11-2005, 22:36 
 
und ... wozu das if(). ist der text kürzer als $x würde auch in voller länge übernommen. ;)

 
TobiaZ
14-11-2005, 22:41 
 
;)

Naja, vielleicht hatte da jemand vor, den gekürzten String mit drei Punkten... zu versehen ;) Fehlt nur noch einiges an Code.

 
Wurzel
14-11-2005, 23:38 
 
wenn das ganze eh aus der datenbank kommt, frag ich mich, warum er, sie, es nicht SUBSTRING_INDEX() benutzt?

 
chefdesigner
15-11-2005, 12:38 
 
@onemorenerd: richtig, ich wollte, wie von TobiaZ erkannt, dass der Text nicht mitten in einem Wort umgebrochen wird, deshalb wordrap().

@Abraxax: auch hier hat TobiaZ das Ganze richtig erkannt, ich wollte umgebrochenen Text mit drei Punkten versehen. Check aber langsam nicht mehr durch im Script.

@Wurzel: Die Funktion kenn ich noch gar nicht, werd mich gleich mal drüber informieren. Erfüllt diese Funktion denn alle bisher genannten Bedingungen?

 
TobiaZ
15-11-2005, 12:45 
 
@Abraxax: auch hier hat TobiaZ das Ganze richtig erkannt, ich wollte umgebrochenen Text mit drei Punkten versehen. Check aber langsam nicht mehr durch im Script. Dann würde ich das aber auch richtig machen und die 3 Zeichen (...) auch noch vom string abziehen ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:43 Uhr.