Text auf X Zeichen in While-Schleife kürzen
Birte W.
- php
Hallo zusammen,
ich möchte einen text, den ich aus einer datenbank bekomme, auf X Zeichen kürzen. Ich habe dazu folgendes geschrieben und wollte fragen, ob bei meiner variante noch optimierungsbedarf aus eurer sich besteht. danke für die tipps!
<?php
while ($nav = mysql_fetch_array($navigation_query)){
$cutdesc = substr($nav['kat_description'], 0, 255);
?>
<a href="<?=$nav['link_aus_spalte1']?>"><img src="<?=$nav['bild_URL_aus_spalte2']?>"></a>
<? echo($cutdesc) ?> [...]
Vielen Dank!
Hello,
$cutdesc = substr($nav['kat_description'], 0, 255);
Welche Zeichencodierung verwendest Du?
Substr() ist nur für einbytige Codierungen gedacht.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Welche Zeichencodierung verwendest Du?
Substr() ist nur für einbytige Codierungen gedacht.
Hallo Tom
ich nutze UTF-8 als Codierung. Ist die Abfrage denn so wie sie ist optimal?
Viele Grüße
Birte
Welche Zeichencodierung verwendest Du?
Substr() ist nur für einbytige Codierungen gedacht.
ich nutze UTF-8 als Codierung. Ist die Abfrage denn so wie sie ist optimal?
Nein, wenn Du nur die ersten 255 Zeichen ausgeben möchtest, dann lass die Datenbank auch nur diese Zeichen zurückliefern (siehe MySQL SUBSTRING).
Hello Birte,
Welche Zeichencodierung verwendest Du?
Substr() ist nur für einbytige Codierungen gedacht.
ich nutze UTF-8 als Codierung. Ist die Abfrage denn so wie sie ist optimal?
Wenn Du da ins PHP-Handbuch unter
http://de3.php.net/manual/en/function.substr.php
schaust, dann steht das da leider nicht dabei, dass substr() nur für einbytige Codierungen gedacht ist. Aber Du findest einen Verweis auf
http://de3.php.net/manual/en/function.mb-substr.php
Diese Funktion ist für multibytecodierte Zeichenketten gedacht.
Aber wie zehbaeh das schon angedeutet hat https://forum.selfhtml.org/?t=209218&m=1423661 brauchst Du die Zeichen gar nbicht erst zu holen aus der Tabelle, wenn Du sie sowieso nicht verarbeiten willst, sondern kannst gleich der Datenbankl beim Select mitteilen, dass sie nur die ersten 255 Zeichen des Textes zurückliefern soll.
http://dev.mysql.com/doc/refman/5.1/de/string-functions.html auf Deutsch, unübresichtlich
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html als übersichtliche Tabelle
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Tach!
<a href="<?=$nav['link_aus_spalte1']?>"><img src="<?=$nav['bild_URL_aus_spalte2']?>"></a>
<? echo($cutdesc) ?> [...]
Kontextwechsel bei (allen) Ausgaben nicht vergessen! echo ist keine Funktion und benötigt keine Klammern. Wenn du die Kurzschreibweise <?= verwendest, kannst du sie auch statt des echo verwenden. (Hinweis: Wenn du für Plattformen mit PHP kleiner als 5.4 schreibst, auf denen short_open_tag ausgeschaltet sein kann, kannst du die Kurzschreibweise nicht verwenden.)
dedlfix.
Weiters: was bisher noch nicht gesagt wurde:
Wenn dein Text z.B. noch Markup (also z.B. HTML) enthält, kann es sein, dass du hier fehler produzierst.
Willst du also 255 Zeichen oder willst du 255 Zeichen + ggf. anfallendes Markup
Beispiel: 9 Zeichen aus folgendem:
<span>foo</span> bar baz qux
<span>foo (9 Zeichen, mit zerstörtem Markup)
<span>foo</span> (9 Zeichen + Vervollständigung des Markups)
foo bar b (9 Zeichen ohne Markup)
<span>foo</span> bar b (9 Zeichen ohne Markup, aber Markup beibehalten
Daneben gibts noch einige weitere Möglichkeiten - z.B maximal 255 Zeichen aber nur ganze Wörter oder 255 Zeichen abzüglich Whitespace usw. das muss erstmal definiert werden.
substr() oder mb_substr() sind jedenfalls Gnadenlos nur n Zeichen und beachten den Rest nicht.