einen Text kürzen, ohne mitten im Wort abzubrechen

30. Oktober 2009

Wie man eine Zeichenkette kürzt, ist denke ich hinlänglich bekannt. Möchte man aber einen Text kürzen, ohne mitten im Wort abzubrechen, dann hilft substr alleine nicht mehr weiter. Deshalb hab ich mir eine Funktion geschrieben, mit der ich meine Texte bequem kürzen kann:

  1. /**
  2. * einen Text kürzen
  3. * @param string $txt der zu kürzende Text
  4. * @param int $length Anzahl der maximalen Zeichen
  5. * @param boolean $dots Soll bei Kürzung am Ende ein "..." angehängt werden?
  6. */
  7. function getShortText($txt,$length, $dots = true){
  8. //html tags entfernen.
  9. $txt = preg_replace("/(<\/?)(\w+)([^>]*>)/e","",$txt);  
  10. //wordwrap.
  11. $trenner = "~|~";
  12. $tmp = explode($trenner,wordwrap($txt,$length,$trenner));
  13. $str = $tmp[0];
  14. //für den Fall eines komplett geistesgestörten Eintrags ohne Leerzeichen...
  15. if(strlen($str) > $length)
  16. $str = substr($txt,0,$length);
  17. //wurde der Text tatsächlich verkürzt oder nicht?
  18. if(strlen($str) < strlen($txt)){
  19. if($dots)
  20. $str.="...";
  21. }
  22. return $str;
  23. }

Das vorherige Entfernen von HTML tags brauchte ich für meine Funktion, da nicht gewährleistet war, dass im Text keine HTML tags vorkommen. Und mitten in einem Tag zu unterbrechen oder Text ohne schließende tags in eine Seite einzufügen war mir definitiv zu unsauber und zu riskant. Deshalb werden zuerst alle tags entfernt.

ganz simpel: options eines selects löschen

23. Oktober 2009

Nur weil ichs mir nicht merken kann und jedes mal wieder vergesse, dass man von hinten nach vorne vorgehen muss, damit das funktioniert, hier ein kurzes Beispielscript, mit dem man die Elemente eines Dropdown entfernt. In diesem speziellen Fall soll das erste Element bleiben und nur der Rest gelöscht werden, deshalb i > 0

  1. function emptyCategorySelect(){
  2. sel = document.getElementById("das_select");
  3. opts = sel.getElementsByTagName("option");
  4. for(i=opts.length;i>0;i--){
  5. sel[i] = null;
  6. }
  7. }

PHP und Reguläre Ausdrücke

19. Oktober 2009

Reguläre Ausdrücke sind nicht meine Stärke. Und deshalb muss ich jedes mal wieder auf die Suche gehen, wenn ich was ersetzen will. Von daher werd ich mir jetzt mal notieren, wie das mit dem Ersetzen von Text innerhalb eines html-tags geht:

  1. $text = preg_replace("/<style>(.*?)<\/style>/", "", $text)

leert alle <style> tags.