strlen & substr
Achot
- php
0 Matthias Apsel0 dedlfix0 Achot
1 Rolf b
Hallo,
ich kurze bei der Ausgabe einen Text, sollte dieser zu lange sein. Dieses mache ich so
<?php if (strlen($array['titel']) >= $zeichen) {?>
<?php echo htmlspecialchars(substr($array['titel'],0, $zeichen) . "..."); } else { ?>
<?php echo htmlspecialchars($array['titel']); ?>
<?php } ?>
Meine Frage passt das so? Das if else benötige ich um die ... zu entfernen, sollten die Zeichen ausreichen. Kann man dieses auch anderes machen?
Hallo Achot,
Kann man dieses auch anderes machen?
https://wiki.selfhtml.org/wiki/Text-overflow
Bis demnächst
Matthias
Hallo,
danke für den Tipp mit dem CSS. Allerdings ist dieses keine gute Lösung, da der vollständig Text weiterhin im Klartext im Quelltext zu lesen ist? Dadurch wird viel zu viel Text geladen der an dieser Stelle nicht benötigt wird.
@@Achot
danke für den Tipp mit dem CSS. Allerdings ist dieses keine gute Lösung,
Doch, das ist es. Warum das serverseitige Abschneiden keine gute Lösung ist, hab ich vor einiger Zeit schon mal aufgeschrieben.
Dadurch wird viel zu viel Text geladen der an dieser Stelle nicht benötigt wird.
Ein paar Byte Text sollten nicht das Problem sein.
Du kannst aber beides machen: serverseitig auf eine nicht zu kleine Länge vorkürzen und clientseitig text-overflow
einsetzen.
LLAP 🖖
@@Achot
danke für den Tipp mit dem CSS. Allerdings ist dieses keine gute Lösung,
Doch, das ist es. Warum das serverseitige Abschneiden keine gute Lösung ist, hab ich vor einiger Zeit schon mal aufgeschrieben.
Sehr gut!
Tach!
Meine Frage passt das so?
Solange du nicht mit UTF-8 arbeitest, dann passt das so, wenn dein Ergebnis den Erwartungen entspricht.
dedlfix.
Hallo,
Solange du nicht mit UTF-8 arbeitest, dann passt das so, wenn dein Ergebnis den Erwartungen entspricht.
danke
Da sich eine solche Aufgabe typischerweise wiederholt, und es immer gut ist, unterschiedliche Abstraktionsebenen der Programmlogik nicht in einen Klumpatsch zu vermengen, würde ich es eher so machen:
<?= htmlspecialchars(truncate_string_with_ellipsis($array['titel'], $zeichen)) ?>
und an anderer Stelle, wo Du deine Toolbox-Funktionen sammelst, dann
function truncate_string_with_ellipsis($longString, $maxLength)
{
if (\strlen($longString) <= $maxLength) // Länge nicht überschritten?
return $longString; // --> Nichts tun
return \substr($longString, 0, $maxLength-3) . '...';
}
Dazu folgende Anmerkungen:
Rolf